// PR c++/96241 | |
// { dg-do compile { target c++14 } } | |
#define assert(expr) static_assert (expr, #expr) | |
enum E { o }; | |
struct S { | |
int e = o; | |
}; | |
using T = S[3]; | |
constexpr struct S s[1][1][1] = { }; | |
assert (0 == s[0][0][0].e); | |
constexpr int | |
fn0 () | |
{ | |
return T{}[0].e; | |
} | |
assert(fn0 () == 0); | |
constexpr int | |
fn1 () | |
{ | |
S d[1]; | |
int x = d[0].e; | |
return x; | |
} | |
assert(fn1 () == 0); | |
constexpr int | |
fn2 () | |
{ | |
S d[1]; | |
return d[0].e; | |
} | |
assert(fn2 () == 0); | |
constexpr int | |
fn3 () | |
{ | |
struct X { int e = o; } d[1]{}; | |
return d[0].e; | |
} | |
assert(fn3 () == 0); |