annotate gcc/testsuite/g++.dg/cpp2a/nontype-class36.C @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 /* PR c++/94510 - nullptr_t implicitly cast to zero twice in std::array
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 { dg-do compile { target c++20 } }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 { dg-options "-Wall" } */
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5 struct A { int i; int f (); };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 typedef int A::*MemPtr;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 typedef int (A::*MemFuncPtr)();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 struct B { MemPtr a[3]; MemFuncPtr b[3]; };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 static const constexpr MemPtr mp0 = { 0 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 static const constexpr MemPtr mpn = { nullptr };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 static const constexpr MemPtr mp_ = { };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14 static const constexpr MemPtr mpi = { &A::i };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 template <B> struct X { };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 typedef X<B{ }> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 typedef X<B{ 0 }> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 typedef X<B{{ 0 }}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 typedef X<B{{ MemPtr{ }}}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 typedef X<B{{ MemPtr{ 0 }}}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 typedef X<B{{ MemPtr () }}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 typedef X<B{{ MemPtr{ nullptr }}}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 typedef X<B{{ mp_ }}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 typedef X<B{{ mpn }}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 typedef X<B{{ mp0 }}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 typedef X<B{ mpi }> XBp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 typedef X<B{ mpi, 0 }> XBp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 typedef X<B{{ mpi, 0 }}> XBp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32 typedef X<B{{ mpi, MemPtr{ }}}> XBp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 typedef X<B{{ mpi, MemPtr{ 0 }}}> XBp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 typedef X<B{{ mpi, MemPtr () }}> XBp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35 typedef X<B{{ mpi, MemPtr{ nullptr }}}> XBp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 typedef X<B{{ mpi, mp_ }}> XBp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 typedef X<B{{ mpi, mpn }}> XBp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38 typedef X<B{{ mpi, mp0 }}> XBp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 typedef X<B{ mpi, mpi }> XBpp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
41 typedef X<B{ mpi, mpi, 0 }> XBpp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
42 typedef X<B{{ mpi, mpi, 0 }}> XBpp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
43 typedef X<B{{ mpi, mpi, MemPtr{ }}}> XBpp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
44 typedef X<B{{ mpi, mpi, MemPtr{ 0 }}}> XBpp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
45 typedef X<B{{ mpi, mpi, MemPtr () }}> XBpp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
46 typedef X<B{{ mpi, mpi, MemPtr{ nullptr }}}> XBpp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
47 typedef X<B{{ mpi, mpi, mp_ }}> XBpp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
48 typedef X<B{{ mpi, mpi, mpn }}> XBpp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
49 typedef X<B{{ mpi, mpi, mp0 }}> XBpp;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
50
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
51 typedef X<B{ 0, mpi }> XB0p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
52 typedef X<B{ nullptr, mpi, 0 }> XB0p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
53 typedef X<B{ mp0, mpi, 0 }> XB0p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
54
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
55 typedef X<B{ 0, 0, mpi }> XB00p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
56 typedef X<B{ 0, nullptr, mpi }> XB00p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
57 typedef X<B{ nullptr, 0, mpi }> XB00p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
58 typedef X<B{ nullptr, nullptr, mpi }> XB00p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
59 typedef X<B{ MemPtr{ }, MemPtr{ }, mpi }> XB00p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
60 typedef X<B{ mp0, MemPtr{ }, mpi }> XB00p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
61 typedef X<B{ mpn, mpn, mpi }> XB00p;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
62 typedef X<B{ mpn, mp_, mpi }> XB00p; // { dg-bogus "conflicting declaration" "pr94568" { xfail *-*-* } }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
63
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
64 static const constexpr MemFuncPtr mfp0 = { 0 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
65 static const constexpr MemFuncPtr mfpn = { nullptr };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
66 static const constexpr MemFuncPtr mfp_ = { };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
67
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
68 typedef X<B{{ }, { }}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
69 typedef X<B{{ }, { 0 }}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
70 typedef X<B{{ }, { MemFuncPtr{ }}}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
71 typedef X<B{{ }, { MemFuncPtr{ 0 }}}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
72 typedef X<B{{ }, { MemFuncPtr () }}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
73 typedef X<B{{ }, { MemFuncPtr{ nullptr }}}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
74 typedef X<B{{ }, { mfp_ }}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
75 typedef X<B{{ }, { mfpn }}> XB;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
76 typedef X<B{{ }, { mfp0 }}> XB;