1 // PR c++/68949
2 // { dg-do run { target c++11 } }
3
4 struct Sub {
5 int i;
6
SubSub7 constexpr Sub() : i(-1) {} // remove constexpr and it works as expected
8 Sub(Sub&& rhs); // remove this constructor and it works as epxected.
9 };
10
11 // v-- move this inline and it works as expected
12 // v-- remove ': Sub()' and it works as expected
Sub(Sub && rhs)13 Sub::Sub(Sub&& rhs) : Sub() { int tmp = i; i = rhs.i; rhs.i = tmp; }
14
15 struct Class {
16 // v-- remove '[1]' and it works as expected
17 // v-- add '= {}' and it works as expected
18 Sub s[1];
19
20 // v-- add ': s{}' and it works as expected
21 // v-- removing this constructor makes it work as expected
ClassClass22 Class() {}
23 };
24
main()25 int main() {
26 Class c;
27 if (c.s[0].i != -1)
28 __builtin_abort();
29 }
30