1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
/* 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 *-*-* } }
|