// Test for constant initialization of non-literal class (e.g. mutex) | |
// { dg-options "-save-temps" } | |
// { dg-do run { target c++11 } } | |
struct A | |
{ | |
int i; | |
constexpr A(int _i): i(_i) { } | |
A(const A&); // non-trivial copy ctor makes A non-literal | |
}; | |
A a(42); // constexpr constructor allows constant initialization | |
A ar[3] = { { 1 }, { 2 }, { 3 } }; | |
// { dg-final { scan-assembler-not "static_initialization" } } | |
int main() | |
{ | |
if (a.i != 42 | |
|| ar[0].i != 1 | |
|| ar[1].i != 2 | |
|| ar[2].i != 3) | |
return 1; | |
} |