@@ -56,7 +56,7 @@ namespace cwg1 { // cwg1: no
56
56
}
57
57
} // namespace cwg1
58
58
59
- namespace cwg3 { // cwg3: yes
59
+ namespace cwg3 { // cwg3: 2.7
60
60
template <typename T> struct A {};
61
61
template <typename T> void f (T) { A<T> a; } // #cwg3-f-T
62
62
template void f (int );
@@ -156,7 +156,7 @@ namespace cwg10 { // cwg10: dup 45
156
156
};
157
157
} // namespace cwg10
158
158
159
- namespace cwg11 { // cwg11: yes
159
+ namespace cwg11 { // cwg11: 2.7
160
160
template <typename T> struct A : T {
161
161
using typename T::U;
162
162
U u;
@@ -221,7 +221,7 @@ namespace cwg14 { // cwg14: 3.4
221
221
// expected-note@#cwg14-Y-U {{candidate found by name lookup is 'cwg14::Y::U'}}
222
222
} // namespace cwg14
223
223
224
- namespace cwg15 { // cwg15: yes
224
+ namespace cwg15 { // cwg15: 2.7
225
225
template <typename T> void f (int ); // #cwg15-f-decl-first
226
226
template <typename T> void f (int = 0 );
227
227
// 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
250
250
};
251
251
} // namespace cwg16
252
252
253
- namespace cwg17 { // cwg17: yes
253
+ namespace cwg17 { // cwg17: 2.7
254
254
class A {
255
255
int n;
256
256
int f ();
@@ -311,7 +311,7 @@ namespace cwg22 { // cwg22: sup 481
311
311
template <typename T = T> struct Y ;
312
312
} // namespace cwg22
313
313
314
- namespace cwg23 { // cwg23: yes
314
+ namespace cwg23 { // cwg23: 2.7
315
315
template <typename T> void f (T, T); // #cwg23-f-T-T
316
316
template <typename T> void f (T, int ); // #cwg23-f-T-int
317
317
void g () { f (0 , 0 ); }
@@ -322,7 +322,7 @@ namespace cwg23 { // cwg23: yes
322
322
323
323
// cwg24: na
324
324
325
- namespace cwg25 { // cwg25: yes
325
+ namespace cwg25 { // cwg25: 4
326
326
struct A {
327
327
void f () throw(int );
328
328
// since-cxx17-error@-1 {{ISO C++17 does not allow dynamic exception specifications}}
@@ -357,7 +357,7 @@ namespace cwg25 { // cwg25: yes
357
357
}
358
358
} // namespace cwg25
359
359
360
- namespace cwg26 { // cwg26: yes
360
+ namespace cwg26 { // cwg26: 2.7
361
361
struct A { A(A, const A & = A()); };
362
362
// expected-error@-1 {{copy constructor must pass its first argument by reference}}
363
363
struct B {
@@ -377,7 +377,7 @@ namespace cwg26 { // cwg26: yes
377
377
};
378
378
} // namespace cwg26
379
379
380
- namespace cwg27 { // cwg27: yes
380
+ namespace cwg27 { // cwg27: 2.7
381
381
enum E { e } n;
382
382
E &m = true ? n : n;
383
383
} // namespace cwg27
@@ -623,7 +623,7 @@ namespace example4 {
623
623
624
624
// cwg37: sup 475
625
625
626
- namespace cwg38 { // cwg38: yes
626
+ namespace cwg38 { // cwg38: 2.7
627
627
template <typename T> struct X {};
628
628
template <typename T> X<T> operator +(X<T> a, X<T> b) { return a; }
629
629
template X<int > operator +<int >(X<int >, X<int >);
@@ -720,11 +720,11 @@ namespace cwg39 { // cwg39: no
720
720
721
721
// cwg40: na
722
722
723
- namespace cwg41 { // cwg41: yes
723
+ namespace cwg41 { // cwg41: 2.7
724
724
struct S f (S);
725
725
} // namespace cwg41
726
726
727
- namespace cwg42 { // cwg42: yes
727
+ namespace cwg42 { // cwg42: 2.7
728
728
struct A { static const int k = 0 ; };
729
729
struct B : A { static const int k = A::k; };
730
730
} // namespace cwg42
@@ -738,15 +738,15 @@ namespace cwg44 { // cwg44: sup 727
738
738
};
739
739
} // namespace cwg44
740
740
741
- namespace cwg45 { // cwg45: yes
741
+ namespace cwg45 { // cwg45: 2.7
742
742
class A {
743
743
class B {};
744
744
class C : B {};
745
745
C c;
746
746
};
747
747
} // namespace cwg45
748
748
749
- namespace cwg46 { // cwg46: yes
749
+ namespace cwg46 { // cwg46: 2.7
750
750
template <typename > struct A { template <typename > struct B {}; };
751
751
template template struct A <int >::B<int >;
752
752
// expected-error@-1 {{expected unqualified-id}}
@@ -766,7 +766,7 @@ namespace cwg47 { // cwg47: sup 329
766
766
void g () { f (); }
767
767
} // namespace cwg47
768
768
769
- namespace cwg48 { // cwg48: yes
769
+ namespace cwg48 { // cwg48: 2.7
770
770
namespace {
771
771
struct S {
772
772
static const int m = 0 ;
@@ -808,7 +808,7 @@ namespace cwg49 { // cwg49: 2.8
808
808
// since-cxx17-note@#cwg49-q {{declared here}}
809
809
} // namespace cwg49
810
810
811
- namespace cwg50 { // cwg50: yes
811
+ namespace cwg50 { // cwg50: 2.7
812
812
struct X ; // #cwg50-X
813
813
extern X *p;
814
814
X *q = (X*)p;
@@ -842,7 +842,7 @@ namespace cwg52 { // cwg52: 2.8
842
842
// expected-note@#cwg52-B {{declared private here}}
843
843
} // namespace cwg52
844
844
845
- namespace cwg53 { // cwg53: yes
845
+ namespace cwg53 { // cwg53: 2.7
846
846
int n = 0 ;
847
847
enum E { e } x = static_cast <E>(n);
848
848
} // namespace cwg53
@@ -901,12 +901,12 @@ namespace cwg54 { // cwg54: 2.8
901
901
// 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}}
902
902
} // namespace cwg54
903
903
904
- namespace cwg55 { // cwg55: yes
904
+ namespace cwg55 { // cwg55: 2.7
905
905
enum E { e = 5 };
906
906
static_assert (e + 1 == 6 , " " );
907
907
} // namespace cwg55
908
908
909
- namespace cwg56 { // cwg56: yes
909
+ namespace cwg56 { // cwg56: 2.7
910
910
struct A {
911
911
typedef int T; // #cwg56-typedef-int-T-first
912
912
typedef int T;
@@ -933,7 +933,7 @@ namespace cwg58 { // cwg58: 3.1
933
933
#endif
934
934
} // namespace cwg58
935
935
936
- namespace cwg59 { // cwg59: yes
936
+ namespace cwg59 { // cwg59: 2.7
937
937
#pragma clang diagnostic push
938
938
#pragma clang diagnostic ignored "-Wdeprecated-volatile"
939
939
template <typename T> struct convert_to { operator T () const ; };
@@ -990,7 +990,7 @@ namespace cwg59 { // cwg59: yes
990
990
#pragma clang diagnostic pop
991
991
} // namespace cwg59
992
992
993
- namespace cwg60 { // cwg60: yes
993
+ namespace cwg60 { // cwg60: 2.7
994
994
void f (int &);
995
995
int &f (...);
996
996
const int k = 0 ;
@@ -1067,13 +1067,13 @@ namespace cwg62 { // cwg62: 2.9
1067
1067
}
1068
1068
} // namespace cwg62
1069
1069
1070
- namespace cwg63 { // cwg63: yes
1070
+ namespace cwg63 { // cwg63: 2.7
1071
1071
template <typename T> struct S { typename T::error e; };
1072
1072
extern S<int > *p;
1073
1073
void *q = p;
1074
1074
} // namespace cwg63
1075
1075
1076
- namespace cwg64 { // cwg64: yes
1076
+ namespace cwg64 { // cwg64: 2.7
1077
1077
template <class T > void f (T);
1078
1078
template <class T > void f (T*);
1079
1079
template <> void f (int *);
@@ -1136,7 +1136,7 @@ namespace cwg69 { // cwg69: 9
1136
1136
// cxx98-note@#cwg69-f {{non-type template argument refers to function here}}
1137
1137
} // namespace cwg69
1138
1138
1139
- namespace cwg70 { // cwg70: yes
1139
+ namespace cwg70 { // cwg70: 2.7
1140
1140
template <int > struct A {};
1141
1141
template <int I, int J> int f (int (&)[I + J], A<I>, A<J>);
1142
1142
int arr[7 ];
@@ -1155,26 +1155,26 @@ namespace cwg73 { // cwg73: sup 1652
1155
1155
#endif
1156
1156
} // namespace cwg73
1157
1157
1158
- namespace cwg74 { // cwg74: yes
1158
+ namespace cwg74 { // cwg74: 2.7
1159
1159
enum E { k = 5 };
1160
1160
int (*p)[k] = new int [k][k];
1161
1161
} // namespace cwg74
1162
1162
1163
- namespace cwg75 { // cwg75: yes
1163
+ namespace cwg75 { // cwg75: 2.7
1164
1164
struct S {
1165
1165
static int n = 0 ;
1166
1166
// expected-error@-1 {{non-const static data member must be initialized out of line}}
1167
1167
};
1168
1168
} // namespace cwg75
1169
1169
1170
- namespace cwg76 { // cwg76: yes
1170
+ namespace cwg76 { // cwg76: 2.7
1171
1171
const volatile int n = 1 ;
1172
1172
static_assert (n, " " );
1173
1173
// expected-error@-1 {{static assertion expression is not an integral constant expression}}
1174
1174
// expected-note@-2 {{read of volatile-qualified type 'const volatile int' is not allowed in a constant expression}}
1175
1175
} // namespace cwg76
1176
1176
1177
- namespace cwg77 { // cwg77: yes
1177
+ namespace cwg77 { // cwg77: 2.7
1178
1178
struct A {
1179
1179
struct B {};
1180
1180
friend struct B ;
@@ -1213,13 +1213,13 @@ namespace cwg80 { // cwg80: 2.9
1213
1213
// cwg81: na
1214
1214
// cwg82: dup 48
1215
1215
1216
- namespace cwg83 { // cwg83: yes
1216
+ namespace cwg83 { // cwg83: 2.7
1217
1217
int &f (const char *);
1218
1218
char &f (char *);
1219
1219
int &k = f(" foo" );
1220
1220
} // namespace cwg83
1221
1221
1222
- namespace cwg84 { // cwg84: yes
1222
+ namespace cwg84 { // cwg84: 2.7
1223
1223
struct B ;
1224
1224
struct A { operator B () const ; };
1225
1225
struct C {};
@@ -1299,7 +1299,7 @@ namespace cwg88 { // cwg88: 2.8
1299
1299
1300
1300
// cwg89: na
1301
1301
1302
- namespace cwg90 { // cwg90: yes
1302
+ namespace cwg90 { // cwg90: 2.7
1303
1303
struct A {
1304
1304
template <typename T> friend void cwg90_f (T);
1305
1305
};
@@ -1333,7 +1333,7 @@ namespace cwg90 { // cwg90: yes
1333
1333
}
1334
1334
} // namespace cwg90
1335
1335
1336
- namespace cwg91 { // cwg91: yes
1336
+ namespace cwg91 { // cwg91: 2.7
1337
1337
union U { friend int f (U); };
1338
1338
int k = f(U());
1339
1339
} // namespace cwg91
@@ -1383,7 +1383,7 @@ namespace cwg92 { // cwg92: 4 c++17
1383
1383
1384
1384
// cwg93: na
1385
1385
1386
- namespace cwg94 { // cwg94: yes
1386
+ namespace cwg94 { // cwg94: 2.7
1387
1387
struct A { static const int n = 5 ; };
1388
1388
int arr[A::n];
1389
1389
} // namespace cwg94
@@ -1426,14 +1426,14 @@ namespace cwg96 { // cwg96: sup P1787
1426
1426
}
1427
1427
} // namespace cwg96
1428
1428
1429
- namespace cwg97 { // cwg97: yes
1429
+ namespace cwg97 { // cwg97: 2.7
1430
1430
struct A {
1431
1431
static const int a = false ;
1432
1432
static const int b = !a;
1433
1433
};
1434
1434
} // namespace cwg97
1435
1435
1436
- namespace cwg98 { // cwg98: yes
1436
+ namespace cwg98 { // cwg98: 2.7
1437
1437
void test (int n) {
1438
1438
switch (n) {
1439
1439
try { // #cwg98-try
0 commit comments