blob: 704d37de129bb800cd0187abf1eec898c287af5e [file] [log] [blame]
// PR c++/104284
// { dg-do compile { target c++14 } }
// { dg-additional-options "-fchecking=2" }
struct S {
char a;
constexpr S() : a{'a'} { }
constexpr S(char a_) : a{a_} { }
};
auto x1 = [](auto) { constexpr S s[]{{}}; };
auto x2 = [](auto) { constexpr S s[]{{'a'}}; };
auto x3 = [](auto) { constexpr S s[]{'a'}; };
auto x4 = [](auto) { constexpr S s[]{{{}}}; };
template<typename>
constexpr void g()
{
constexpr S s1[]{{}};
static_assert(s1[0].a == 'a', "");
constexpr S s2[]{{'a'}};
static_assert(s2[0].a == 'a', "");
constexpr S s3[]{'a'};
static_assert(s3[0].a == 'a', "");
constexpr S s4[]{{{}}};
static_assert(s4[0].a == '\0', "");
}
void
f ()
{
g<int>();
}