blob: f5e9826d243109aaaac00419426df7d3bdc0f7ef [file] [log] [blame]
/* PR c++/94510 - nullptr_t implicitly cast to zero twice in std::array
{ dg-do compile { target c++20 } }
{ dg-options "-Wall" } */
struct A { char a[4]; };
template <A> struct B { };
constexpr const char c0{ };
constexpr const char c1{ 1 };
typedef B<A{ }> BA;
typedef B<A{ { } }> BA;
typedef B<A{ { 0 } }> BA;
typedef B<A{ { c0 } }> BA;
typedef B<A{ { 0, 0 } }> BA;
typedef B<A{ { 0, 0, 0 } }> BA;
typedef B<A{ { 0, 0, 0, 0 } }> BA;
typedef B<A{ { c0, c0, c0 } }> BA;
typedef B<A{ { c0, c0, c0, c0 } }> BA;
typedef B<A{ "" }> BA;
typedef B<A{ "\0" }> BA;
typedef B<A{ "\0\0" }> BA;
typedef B<A{ "\0\0\0" }> BA;
typedef B<A{ 1 }> BA1;
typedef B<A{ { 1 } }> BA1;
typedef B<A{ { 1, 0 } }> BA1;
typedef B<A{ { 1, 0, 0 } }> BA1;
typedef B<A{ { 1, 0, 0, 0 } }> BA1;
typedef B<A{ { c1 } }> BA1;
typedef B<A{ { c1, c0 } }> BA1;
typedef B<A{ { c1, c0, c0 } }> BA1;
typedef B<A{ { c1, c0, c0, c0 } }> BA1;
typedef B<A{ "\1" }> BA1;
typedef B<A{ "\1\0" }> BA1;
typedef B<A{ "\1\0\0" }> BA1;
typedef B<A{ 0, 1 }> BA01;
typedef B<A{ { 0, 1 } }> BA01;
typedef B<A{ { 0, 1, 0 } }> BA01;
typedef B<A{ { 0, 1, 0, 0 } }> BA01;
typedef B<A{ { c0, c1 } }> BA01;
typedef B<A{ { c0, c1, c0 } }> BA01;
typedef B<A{ { c0, c1, c0, c0 } }> BA01;
typedef B<A{ "\0\1" }> BA01;
typedef B<A{ "\0\1\0" }> BA01;
struct C { int a[4]; };
template <C> struct D { };
constexpr const int i0{ };
typedef D<C{ }> DC;
typedef D<C{ { } }> DC;
typedef D<C{ { 0 } }> DC;
typedef D<C{ { 0, 0 } }> DC;
typedef D<C{ { 0, 0, 0 } }> DC;
typedef D<C{ { 0, 0, 0, 0 } }> DC;
typedef D<C{ { i0 } }> DC;
typedef D<C{ { i0, i0 } }> DC;
typedef D<C{ { i0, i0, i0 } }> DC;
typedef D<C{ { i0, i0, i0, i0 } }> DC;
constexpr const int i1{ 1 };
typedef D<C{ 1 }> DC1;
typedef D<C{ { 1 } }> DC1;
typedef D<C{ { 1, 0 } }> DC1;
typedef D<C{ { 1, 0, 0 } }> DC1;
typedef D<C{ { 1, 0, 0, 0 } }> DC1;
typedef D<C{ { i1, i0, i0, i0 } }> DC1;
typedef D<C{ 0, 1 }> DC01;
typedef D<C{ { 0, 1 } }> DC01;
typedef D<C{ { 0, 1, 0 } }> DC01;
typedef D<C{ { 0, 1, 0, 0 } }> DC01;
typedef D<C{ { 0, i1, 0, 0 } }> DC01;
typedef D<C{ { i0, i1, i0, i0 } }> DC01; // { dg-bogus "conflicting declaration" "pr94567" { xfail *-*-* } }