PR c++/86728 - C variadic generic lambda.
[official-gcc.git] / gcc / testsuite / g++.dg / init / pr42844.C
blob299a30a91d2f1dc865966f7f2f79c19b0a233ec1
1 // PR c++/42844
2 // { dg-do compile }
4 struct A
6   A(){}
7 };
9 struct B : A { int i; }; // { dg-message "user-provided default constructor" }
11 struct C : A { int i; }; // { dg-message "user-provided default constructor" }
13 struct D : B { D() {} };
15 struct E { int i; }; // { dg-message "user-provided default constructor" }
17 template <class T>
18 struct F : A { T t; }; // { dg-message "user-provided default constructor" }
20 template <class T>
21 struct G { T t; }; // { dg-message "user-provided default constructor" }
23 void f ()
25   B const b;    // { dg-error "uninitialized const" }
26   extern B const bext;
28   C const c[ 1 ]; // { dg-error "uninitialized const" }
29   extern C const cext[ 1 ];
31   D const d;
32   extern D const dext;
34   E const e;    // { dg-error "uninitialized const" }
35   extern E const eext;
37   F<int> const f; // { dg-error "uninitialized const" }
38   extern F<int> const fext;
40   G<int> const g; // { dg-error "uninitialized const" }
41   extern G<int> const gext;
44 struct H { int i; }; // { dg-message "user-provided default constructor" }
46 struct I : A { int i; }; // { dg-message "user-provided default constructor" }
48 template <class T>
49 void g ()
51   T const t; // { dg-error "uninitialized const" }
52   extern T const text;
55 template void g<H> ();
56 template void g<I> ();