diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp0x/constexpr-array15.C')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/constexpr-array15.C | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/constexpr-array15.C b/gcc/testsuite/g++.dg/cpp0x/constexpr-array15.C new file mode 100644 index 00000000000..a59e6f5df14 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/constexpr-array15.C @@ -0,0 +1,29 @@ +// PR c++/68949 +// { dg-do run { target c++11 } } + +struct Sub { + int i; + + constexpr Sub() : i(-1) {} // remove constexpr and it works as expected + Sub(Sub&& rhs); // remove this constructor and it works as epxected. +}; + +// v-- move this inline and it works as expected +// v-- remove ': Sub()' and it works as expected +Sub::Sub(Sub&& rhs) : Sub() { int tmp = i; i = rhs.i; rhs.i = tmp; } + +struct Class { + // v-- remove '[1]' and it works as expected + // v-- add '= {}' and it works as expected + Sub s[1]; + + // v-- add ': s{}' and it works as expected + // v-- removing this constructor makes it work as expected + Class() {} +}; + +int main() { + Class c; + if (c.s[0].i != -1) + __builtin_abort(); +} |