template <typename T> struct Foo {
struct SubFoo {
int bar1;
int bar2;
};
static void Test() { SubFoo sf = {.bar1 = 10, .bar2 = 20}; } };
void foo() {
Foo<int>::Test();
Foo<bool>::Test();
Foo<float>::Test();
}
template <typename T> struct Bar {
struct SubFoo {
int bar1;
int bar2;
};
static void Test() { SubFoo sf = {.bar1 = 10, .bar1 = 20}; } };
void bar() {
Bar<int>::Test(); Bar<bool>::Test(); }
namespace Reorder {
struct X {
X(int n);
private:
int i;
};
struct foo {
X x;
X y;
};
foo n = {.y = 4, .x = 5};
X arr[2] = {[1] = 1, [0] = 2};
}
namespace Reorder2 {
struct S {
S();
S(const S &);
~S();
};
struct EF {
S s;
};
struct PN {
PN(const PN &);
};
extern PN pn;
struct FLN {
EF ef;
int it;
PN pn;
};
void f() {
FLN new_elem = {
.ef = EF(),
.pn = pn,
.it = 0,
};
}
}
namespace Reorder3 {
struct S {
int a, &b, &c; };
S s1 = {
.a = 1, .c = s1.a, .b = s1.a
};
S s2 = {
.a = 1, .c = s2.a
}; S s3 = {
.b = s3.a, .a = 1,
}; }
namespace NoCheckingFilledHoles {
template<typename T> struct Error { using type = typename T::type; };
template<int N>
struct DefaultInitIsError {
DefaultInitIsError(Error<int[N]> = {}); DefaultInitIsError(int, int);
};
template<int N>
struct X {
int a;
DefaultInitIsError<N> e;
int b;
};
X<1> x1 = {
.b = 2,
.a = 1,
{4, 4}
};
X<2> x2 = {
.e = {4, 4},
.b = 2,
.a = 1
};
X<3> x3 = {
.b = 2,
.a = 1
}; X<4> x4 = {
.a = 1,
.b = 2
}; X<5> x5 = {
.e = {4, 4},
.a = 1,
.b = 2
};
X<6> x6 = {
.a = 1,
.b = 2,
.e = {4, 4}
};
template<int N> struct Y { X<N> x; };
Y<7> y7 = {
.x = {.a = 1, .b = 2}, .x.e = {3, 4}
};
Y<8> y8 = {
.x = {.e = {3, 4}},
.x.a = 1,
.x.b = 2
};
}
namespace LargeArrayDesignator {
struct X {
int arr[1000000000];
};
struct Y {
int arr[3];
};
void f(X x);
void f(Y y) = delete;
void g() {
f({.arr[4] = 1});
}
}
namespace ADL {
struct A {};
void f(A, int);
namespace X {
void f(A, int);
void g() { f({}, {}); }
}
}