@@ -56,7 +56,7 @@ namespace cwg1 { // cwg1: no
5656 }
5757} // namespace cwg1
5858
59- namespace cwg3 { // cwg3: yes
59+ namespace cwg3 { // cwg3: 2.7
6060 template <typename T> struct A {};
6161 template <typename T> void f (T) { A<T> a; } // #cwg3-f-T
6262 template void f (int );
@@ -156,7 +156,7 @@ namespace cwg10 { // cwg10: dup 45
156156 };
157157} // namespace cwg10
158158
159- namespace cwg11 { // cwg11: yes
159+ namespace cwg11 { // cwg11: 2.7
160160 template <typename T> struct A : T {
161161 using typename T::U;
162162 U u;
@@ -221,7 +221,7 @@ namespace cwg14 { // cwg14: 3.4
221221 // expected-note@#cwg14-Y-U {{candidate found by name lookup is 'cwg14::Y::U'}}
222222} // namespace cwg14
223223
224- namespace cwg15 { // cwg15: yes
224+ namespace cwg15 { // cwg15: 2.7
225225 template <typename T> void f (int ); // #cwg15-f-decl-first
226226 template <typename T> void f (int = 0 );
227227 // expected-error@-1 {{default arguments cannot be added to a function template that has already been declared}}
@@ -250,7 +250,7 @@ namespace cwg16 { // cwg16: 2.8
250250 };
251251} // namespace cwg16
252252
253- namespace cwg17 { // cwg17: yes
253+ namespace cwg17 { // cwg17: 2.7
254254 class A {
255255 int n;
256256 int f ();
@@ -311,7 +311,7 @@ namespace cwg22 { // cwg22: sup 481
311311 template <typename T = T> struct Y ;
312312} // namespace cwg22
313313
314- namespace cwg23 { // cwg23: yes
314+ namespace cwg23 { // cwg23: 2.7
315315 template <typename T> void f (T, T); // #cwg23-f-T-T
316316 template <typename T> void f (T, int ); // #cwg23-f-T-int
317317 void g () { f (0 , 0 ); }
@@ -322,7 +322,7 @@ namespace cwg23 { // cwg23: yes
322322
323323// cwg24: na
324324
325- namespace cwg25 { // cwg25: yes
325+ namespace cwg25 { // cwg25: 4
326326 struct A {
327327 void f () throw(int );
328328 // since-cxx17-error@-1 {{ISO C++17 does not allow dynamic exception specifications}}
@@ -357,7 +357,7 @@ namespace cwg25 { // cwg25: yes
357357 }
358358} // namespace cwg25
359359
360- namespace cwg26 { // cwg26: yes
360+ namespace cwg26 { // cwg26: 2.7
361361 struct A { A(A, const A & = A()); };
362362 // expected-error@-1 {{copy constructor must pass its first argument by reference}}
363363 struct B {
@@ -377,7 +377,7 @@ namespace cwg26 { // cwg26: yes
377377 };
378378} // namespace cwg26
379379
380- namespace cwg27 { // cwg27: yes
380+ namespace cwg27 { // cwg27: 2.7
381381 enum E { e } n;
382382 E &m = true ? n : n;
383383} // namespace cwg27
@@ -623,7 +623,7 @@ namespace example4 {
623623
624624// cwg37: sup 475
625625
626- namespace cwg38 { // cwg38: yes
626+ namespace cwg38 { // cwg38: 2.7
627627 template <typename T> struct X {};
628628 template <typename T> X<T> operator +(X<T> a, X<T> b) { return a; }
629629 template X<int > operator +<int >(X<int >, X<int >);
@@ -720,11 +720,11 @@ namespace cwg39 { // cwg39: no
720720
721721// cwg40: na
722722
723- namespace cwg41 { // cwg41: yes
723+ namespace cwg41 { // cwg41: 2.7
724724 struct S f (S);
725725} // namespace cwg41
726726
727- namespace cwg42 { // cwg42: yes
727+ namespace cwg42 { // cwg42: 2.7
728728 struct A { static const int k = 0 ; };
729729 struct B : A { static const int k = A::k; };
730730} // namespace cwg42
@@ -738,15 +738,15 @@ namespace cwg44 { // cwg44: sup 727
738738 };
739739} // namespace cwg44
740740
741- namespace cwg45 { // cwg45: yes
741+ namespace cwg45 { // cwg45: 2.7
742742 class A {
743743 class B {};
744744 class C : B {};
745745 C c;
746746 };
747747} // namespace cwg45
748748
749- namespace cwg46 { // cwg46: yes
749+ namespace cwg46 { // cwg46: 2.7
750750 template <typename > struct A { template <typename > struct B {}; };
751751 template template struct A <int >::B<int >;
752752 // expected-error@-1 {{expected unqualified-id}}
@@ -766,7 +766,7 @@ namespace cwg47 { // cwg47: sup 329
766766 void g () { f (); }
767767} // namespace cwg47
768768
769- namespace cwg48 { // cwg48: yes
769+ namespace cwg48 { // cwg48: 2.7
770770 namespace {
771771 struct S {
772772 static const int m = 0 ;
@@ -808,7 +808,7 @@ namespace cwg49 { // cwg49: 2.8
808808 // since-cxx17-note@#cwg49-q {{declared here}}
809809} // namespace cwg49
810810
811- namespace cwg50 { // cwg50: yes
811+ namespace cwg50 { // cwg50: 2.7
812812 struct X ; // #cwg50-X
813813 extern X *p;
814814 X *q = (X*)p;
@@ -842,7 +842,7 @@ namespace cwg52 { // cwg52: 2.8
842842 // expected-note@#cwg52-B {{declared private here}}
843843} // namespace cwg52
844844
845- namespace cwg53 { // cwg53: yes
845+ namespace cwg53 { // cwg53: 2.7
846846 int n = 0 ;
847847 enum E { e } x = static_cast <E>(n);
848848} // namespace cwg53
@@ -901,12 +901,12 @@ namespace cwg54 { // cwg54: 2.8
901901 // expected-error@-1 {{conversion from pointer to member of class 'cwg54::V' to pointer to member of class 'B' via virtual base 'cwg54::V' is not allowed}}
902902} // namespace cwg54
903903
904- namespace cwg55 { // cwg55: yes
904+ namespace cwg55 { // cwg55: 2.7
905905 enum E { e = 5 };
906906 static_assert (e + 1 == 6 , " " );
907907} // namespace cwg55
908908
909- namespace cwg56 { // cwg56: yes
909+ namespace cwg56 { // cwg56: 2.7
910910 struct A {
911911 typedef int T; // #cwg56-typedef-int-T-first
912912 typedef int T;
@@ -933,7 +933,7 @@ namespace cwg58 { // cwg58: 3.1
933933#endif
934934} // namespace cwg58
935935
936- namespace cwg59 { // cwg59: yes
936+ namespace cwg59 { // cwg59: 2.7
937937#pragma clang diagnostic push
938938#pragma clang diagnostic ignored "-Wdeprecated-volatile"
939939 template <typename T> struct convert_to { operator T () const ; };
@@ -990,7 +990,7 @@ namespace cwg59 { // cwg59: yes
990990#pragma clang diagnostic pop
991991} // namespace cwg59
992992
993- namespace cwg60 { // cwg60: yes
993+ namespace cwg60 { // cwg60: 2.7
994994 void f (int &);
995995 int &f (...);
996996 const int k = 0 ;
@@ -1067,13 +1067,13 @@ namespace cwg62 { // cwg62: 2.9
10671067 }
10681068} // namespace cwg62
10691069
1070- namespace cwg63 { // cwg63: yes
1070+ namespace cwg63 { // cwg63: 2.7
10711071 template <typename T> struct S { typename T::error e; };
10721072 extern S<int > *p;
10731073 void *q = p;
10741074} // namespace cwg63
10751075
1076- namespace cwg64 { // cwg64: yes
1076+ namespace cwg64 { // cwg64: 2.7
10771077 template <class T > void f (T);
10781078 template <class T > void f (T*);
10791079 template <> void f (int *);
@@ -1136,7 +1136,7 @@ namespace cwg69 { // cwg69: 9
11361136 // cxx98-note@#cwg69-f {{non-type template argument refers to function here}}
11371137} // namespace cwg69
11381138
1139- namespace cwg70 { // cwg70: yes
1139+ namespace cwg70 { // cwg70: 2.7
11401140 template <int > struct A {};
11411141 template <int I, int J> int f (int (&)[I + J], A<I>, A<J>);
11421142 int arr[7 ];
@@ -1155,26 +1155,26 @@ namespace cwg73 { // cwg73: sup 1652
11551155#endif
11561156} // namespace cwg73
11571157
1158- namespace cwg74 { // cwg74: yes
1158+ namespace cwg74 { // cwg74: 2.7
11591159 enum E { k = 5 };
11601160 int (*p)[k] = new int [k][k];
11611161} // namespace cwg74
11621162
1163- namespace cwg75 { // cwg75: yes
1163+ namespace cwg75 { // cwg75: 2.7
11641164 struct S {
11651165 static int n = 0 ;
11661166 // expected-error@-1 {{non-const static data member must be initialized out of line}}
11671167 };
11681168} // namespace cwg75
11691169
1170- namespace cwg76 { // cwg76: yes
1170+ namespace cwg76 { // cwg76: 2.7
11711171 const volatile int n = 1 ;
11721172 static_assert (n, " " );
11731173 // expected-error@-1 {{static assertion expression is not an integral constant expression}}
11741174 // expected-note@-2 {{read of volatile-qualified type 'const volatile int' is not allowed in a constant expression}}
11751175} // namespace cwg76
11761176
1177- namespace cwg77 { // cwg77: yes
1177+ namespace cwg77 { // cwg77: 2.7
11781178 struct A {
11791179 struct B {};
11801180 friend struct B ;
@@ -1213,13 +1213,13 @@ namespace cwg80 { // cwg80: 2.9
12131213// cwg81: na
12141214// cwg82: dup 48
12151215
1216- namespace cwg83 { // cwg83: yes
1216+ namespace cwg83 { // cwg83: 2.7
12171217 int &f (const char *);
12181218 char &f (char *);
12191219 int &k = f(" foo" );
12201220} // namespace cwg83
12211221
1222- namespace cwg84 { // cwg84: yes
1222+ namespace cwg84 { // cwg84: 2.7
12231223 struct B ;
12241224 struct A { operator B () const ; };
12251225 struct C {};
@@ -1299,7 +1299,7 @@ namespace cwg88 { // cwg88: 2.8
12991299
13001300// cwg89: na
13011301
1302- namespace cwg90 { // cwg90: yes
1302+ namespace cwg90 { // cwg90: 2.7
13031303 struct A {
13041304 template <typename T> friend void cwg90_f (T);
13051305 };
@@ -1333,7 +1333,7 @@ namespace cwg90 { // cwg90: yes
13331333 }
13341334} // namespace cwg90
13351335
1336- namespace cwg91 { // cwg91: yes
1336+ namespace cwg91 { // cwg91: 2.7
13371337 union U { friend int f (U); };
13381338 int k = f(U());
13391339} // namespace cwg91
@@ -1383,7 +1383,7 @@ namespace cwg92 { // cwg92: 4 c++17
13831383
13841384// cwg93: na
13851385
1386- namespace cwg94 { // cwg94: yes
1386+ namespace cwg94 { // cwg94: 2.7
13871387 struct A { static const int n = 5 ; };
13881388 int arr[A::n];
13891389} // namespace cwg94
@@ -1426,14 +1426,14 @@ namespace cwg96 { // cwg96: sup P1787
14261426 }
14271427} // namespace cwg96
14281428
1429- namespace cwg97 { // cwg97: yes
1429+ namespace cwg97 { // cwg97: 2.7
14301430 struct A {
14311431 static const int a = false ;
14321432 static const int b = !a;
14331433 };
14341434} // namespace cwg97
14351435
1436- namespace cwg98 { // cwg98: yes
1436+ namespace cwg98 { // cwg98: 2.7
14371437 void test (int n) {
14381438 switch (n) {
14391439 try { // #cwg98-try
0 commit comments