Skip to content

Commit 14ba3f9

Browse files
committed
[clang][NFC] Fill in historical data for C++ DRs with 'yes' availability
1 parent d68ea31 commit 14ba3f9

21 files changed

+511
-499
lines changed

clang/test/CXX/drs/cwg0xx.cpp

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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

clang/test/CXX/drs/cwg14xx.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ namespace cwg1432 { // cwg1432: 16
7878
#endif
7979
} // namespace cwg1432
8080

81-
namespace cwg1443 { // cwg1443: yes
81+
namespace cwg1443 { // cwg1443: 2.7
8282
struct A {
8383
int i;
8484
A() { void foo(int=i); }

clang/test/CXX/drs/cwg15xx.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ namespace cwg1560 { // cwg1560: 3.5
355355
const X &x = true ? get() : throw 0;
356356
} // namespace cwg1560
357357

358-
namespace cwg1563 { // cwg1563: yes
358+
namespace cwg1563 { // cwg1563: 3.1
359359
#if __cplusplus >= 201103L
360360
double bar(double) { return 0.0; }
361361
float bar(float) { return 0.0f; }

clang/test/CXX/drs/cwg17xx.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,8 +225,8 @@ namespace cwg1778 { // cwg1778: 9
225225

226226
// cwg1779 is in cwg177x.cpp
227227

228-
namespace cwg1794 { // cwg1794: yes
229-
// NB: dup 1710
228+
namespace cwg1794 { // cwg1794: 2.7
229+
// NB: dup 1710
230230
#if __cplusplus >= 201103L
231231
template <template <typename> class Template> struct Internal {
232232
template <typename Arg> using Bind = Template<Arg>;

clang/test/CXX/drs/cwg18xx.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ namespace cwg1813 { // cwg1813: 7
198198
static_assert(!__is_standard_layout(U), "");
199199
}
200200

201-
namespace cwg1814 { // cwg1814: yes
201+
namespace cwg1814 { // cwg1814: 3.1
202202
#if __cplusplus >= 201103L
203203
void test() {
204204
auto lam = [](int x = 42) { return x; };
@@ -296,7 +296,7 @@ struct A {
296296
};
297297
} // namespace cwg1821
298298

299-
namespace cwg1822 { // cwg1822: yes
299+
namespace cwg1822 { // cwg1822: 3.1
300300
#if __cplusplus >= 201103L
301301
double a;
302302
auto x = [] (int a) {

clang/test/CXX/drs/cwg19xx.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
// RUN: %clang_cc1 -std=c++23 %s -verify=expected,since-cxx14,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors
77
// RUN: %clang_cc1 -std=c++2c %s -verify=expected,since-cxx14,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors
88

9-
namespace std { struct type_info; }
9+
namespace std {
10+
struct type_info;
11+
} // namespace std
1012

1113
namespace cwg1900 { // cwg1900: 2.7
1214
// See the test for CWG1477 for detailed analysis

0 commit comments

Comments
 (0)