Skip to content

Commit 599cba3

Browse files
committed
[clang][NFC] Fill in historical data on when C++ DRs 300-399 were fixed
1 parent c890582 commit 599cba3

File tree

2 files changed

+37
-36
lines changed

2 files changed

+37
-36
lines changed

clang/test/CXX/drs/dr3xx.cpp

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace dr300 { // dr300: yes
1111
void h() { f(g); }
1212
}
1313

14-
namespace dr301 { // dr301: yes
14+
namespace dr301 { // dr301: 3.5
1515
// see also dr38
1616
struct S;
1717
template<typename T> void operator+(T, T);
@@ -42,7 +42,7 @@ namespace dr301 { // dr301: yes
4242
template<typename T> class S::operator&<T*> {}; // expected-error +{{}}
4343
}
4444

45-
namespace dr302 { // dr302: yes
45+
namespace dr302 { // dr302: 3.0
4646
struct A { A(); ~A(); };
4747
#if __cplusplus < 201103L
4848
struct B { // expected-error {{implicit default constructor for 'dr302::B' must explicitly initialize the const member 'n'}}
@@ -70,7 +70,7 @@ namespace dr302 { // dr302: yes
7070

7171
// dr303: na
7272

73-
namespace dr304 { // dr304: yes
73+
namespace dr304 { // dr304: 2.9
7474
typedef int &a;
7575
int n = a(); // expected-error {{requires an initializer}}
7676

@@ -154,7 +154,7 @@ namespace dr306 { // dr306: dup 39
154154

155155
// dr307: na
156156

157-
namespace dr308 { // dr308: yes
157+
namespace dr308 { // dr308: 3.7
158158
// This is mostly an ABI library issue.
159159
struct A {};
160160
struct B : A {};
@@ -182,7 +182,7 @@ namespace dr308 { // dr308: yes
182182

183183
// dr309: dup 485
184184

185-
namespace dr311 { // dr311: yes
185+
namespace dr311 { // dr311: 3.0
186186
namespace X { namespace Y {} }
187187
namespace X::Y {}
188188
#if __cplusplus <= 201402L
@@ -317,7 +317,7 @@ namespace dr321 { // dr321: dup 557
317317
bool x = i == j;
318318
}
319319

320-
namespace dr322 { // dr322: yes
320+
namespace dr322 { // dr322: 2.8
321321
struct A {
322322
template<typename T> operator T&();
323323
} a;
@@ -327,7 +327,7 @@ namespace dr322 { // dr322: yes
327327

328328
// dr323: no
329329

330-
namespace dr324 { // dr324: yes
330+
namespace dr324 { // dr324: 3.6
331331
struct S { int n : 1; } s; // expected-note 3{{bit-field is declared here}}
332332
int &a = s.n; // expected-error {{non-const reference cannot bind to bit-field}}
333333
int *b = &s.n; // expected-error {{address of bit-field}}
@@ -340,7 +340,7 @@ namespace dr324 { // dr324: yes
340340
int *i = &++s.n; // expected-error {{address of bit-field}}
341341
}
342342

343-
namespace dr326 { // dr326: yes
343+
namespace dr326 { // dr326: 3.1
344344
struct S {};
345345
int test[__is_trivially_constructible(S, const S&) ? 1 : -1];
346346
}
@@ -457,7 +457,7 @@ namespace dr330 { // dr330: 7
457457
}
458458
}
459459

460-
namespace dr331 { // dr331: yes
460+
namespace dr331 { // dr331: 11
461461
struct A {
462462
A(volatile A&); // expected-note 2{{candidate}}
463463
} const a, b(a); // expected-error 2{{no matching constructor}}
@@ -535,7 +535,7 @@ namespace dr337 { // dr337: yes
535535
struct B { virtual ~B() = 0; };
536536
}
537537

538-
namespace dr339 { // dr339: yes
538+
namespace dr339 { // dr339: 2.8
539539
template <int I> struct A { static const int value = I; };
540540

541541
char xxx(int);
@@ -675,7 +675,7 @@ namespace dr349 { // dr349: no
675675

676676
// dr351: na
677677

678-
namespace dr352 { // dr352: yes
678+
namespace dr352 { // dr352: 2.8
679679
namespace example1 {
680680
namespace A {
681681
enum E {};
@@ -963,7 +963,7 @@ namespace dr367 { // dr367: yes
963963
#endif
964964
}
965965

966-
namespace dr368 { // dr368: yes
966+
namespace dr368 { // dr368: 3.6
967967
template<typename T, T> struct S {}; // expected-note {{here}}
968968
template<typename T> int f(S<T, T()> *); // expected-error {{function type}}
969969
template<typename T> int g(S<T, (T())> *); // cxx98_17-note {{type 'X'}}
@@ -1079,7 +1079,8 @@ namespace dr373 { // dr373: 5
10791079
using namespace A::B; // expected-error {{expected namespace name}}
10801080
}
10811081

1082-
namespace dr374 { // dr374: yes
1082+
namespace dr374 { // dr374: 7
1083+
// NB 2.9 c++11
10831084
namespace N {
10841085
template<typename T> void f();
10851086
template<typename T> struct A { void f(); };
@@ -1161,7 +1162,7 @@ namespace dr384 { // dr384: yes
11611162
}
11621163
}
11631164

1164-
namespace dr385 { // dr385: yes
1165+
namespace dr385 { // dr385: 2.8
11651166
struct A { protected: void f(); };
11661167
struct B : A { using A::f; };
11671168
struct C : A { void g(B b) { b.f(); } };
@@ -1173,7 +1174,7 @@ namespace dr385 { // dr385: yes
11731174
int i(E e) { return e.n; } // expected-error {{protected member}}
11741175
}
11751176

1176-
namespace dr387 { // dr387: yes
1177+
namespace dr387 { // dr387: 2.8
11771178
namespace old {
11781179
template<typename T> class number {
11791180
number(int); // expected-note 2{{here}}
@@ -1316,7 +1317,7 @@ namespace dr389 { // dr389: no
13161317
}
13171318
}
13181319

1319-
namespace dr390 { // dr390: yes
1320+
namespace dr390 { // dr390: 3.3
13201321
template<typename T>
13211322
struct A {
13221323
A() { f(); } // expected-warning {{call to pure virt}}
@@ -1330,7 +1331,7 @@ namespace dr390 { // dr390: yes
13301331
} b;
13311332
}
13321333

1333-
namespace dr391 { // dr391: yes c++11
1334+
namespace dr391 { // dr391: 2.8 c++11
13341335
// FIXME: Should this apply to C++98 too?
13351336
class A { A(const A&); }; // expected-note 0-1{{here}}
13361337
A fa();
@@ -1357,7 +1358,7 @@ namespace dr391 { // dr391: yes c++11
13571358
// dr392 FIXME write codegen test
13581359
// dr394: na
13591360

1360-
namespace dr395 { // dr395: yes
1361+
namespace dr395 { // dr395: 3.0
13611362
struct S {
13621363
template <typename T, int N>(&operator T())[N]; // expected-error {{cannot specify any part of a return type}}
13631364
template <typename T, int N> operator(T (&)[N])(); // expected-error {{expected ')'}} expected-note {{to match this '('}} expected-error +{{}}

clang/www/cxx_dr_status.html

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1845,13 +1845,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
18451845
<td><a href="https://cplusplus.github.io/CWG/issues/301.html">301</a></td>
18461846
<td>CD1</td>
18471847
<td>Syntax for <I>template-name</I></td>
1848-
<td class="full" align="center">Yes</td>
1848+
<td class="full" align="center">Clang 3.5</td>
18491849
</tr>
18501850
<tr id="302">
18511851
<td><a href="https://cplusplus.github.io/CWG/issues/302.html">302</a></td>
18521852
<td>CD1</td>
18531853
<td>Value-initialization and generation of default constructor</td>
1854-
<td class="full" align="center">Yes</td>
1854+
<td class="full" align="center">Clang 3.0</td>
18551855
</tr>
18561856
<tr id="303">
18571857
<td><a href="https://cplusplus.github.io/CWG/issues/303.html">303</a></td>
@@ -1863,7 +1863,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
18631863
<td><a href="https://cplusplus.github.io/CWG/issues/304.html">304</a></td>
18641864
<td>TC1</td>
18651865
<td>Value-initialization of a reference</td>
1866-
<td class="full" align="center">Yes</td>
1866+
<td class="full" align="center">Clang 2.9</td>
18671867
</tr>
18681868
<tr id="305">
18691869
<td><a href="https://cplusplus.github.io/CWG/issues/305.html">305</a></td>
@@ -1887,7 +1887,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
18871887
<td><a href="https://cplusplus.github.io/CWG/issues/308.html">308</a></td>
18881888
<td>NAD</td>
18891889
<td>Catching exceptions with ambiguous base classes</td>
1890-
<td class="full" align="center">Yes</td>
1890+
<td class="full" align="center">Clang 3.7</td>
18911891
</tr>
18921892
<tr id="309">
18931893
<td><a href="https://cplusplus.github.io/CWG/issues/309.html">309</a></td>
@@ -1905,7 +1905,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
19051905
<td><a href="https://cplusplus.github.io/CWG/issues/311.html">311</a></td>
19061906
<td>NAD</td>
19071907
<td>Using qualified name to reopen nested namespace</td>
1908-
<td class="full" align="center">Yes</td>
1908+
<td class="full" align="center">Clang 3.0</td>
19091909
</tr>
19101910
<tr id="312">
19111911
<td><a href="https://cplusplus.github.io/CWG/issues/312.html">312</a></td>
@@ -1971,7 +1971,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
19711971
<td><a href="https://cplusplus.github.io/CWG/issues/322.html">322</a></td>
19721972
<td>CD1</td>
19731973
<td>Deduction of reference conversions</td>
1974-
<td class="full" align="center">Yes</td>
1974+
<td class="full" align="center">Clang 2.8</td>
19751975
</tr>
19761976
<tr id="323">
19771977
<td><a href="https://cplusplus.github.io/CWG/issues/323.html">323</a></td>
@@ -1983,7 +1983,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
19831983
<td><a href="https://cplusplus.github.io/CWG/issues/324.html">324</a></td>
19841984
<td>CD1</td>
19851985
<td>Can "<TT>&amp;</TT>" be applied to assignment to bit-field?</td>
1986-
<td class="full" align="center">Yes</td>
1986+
<td class="full" align="center">Clang 3.6</td>
19871987
</tr>
19881988
<tr class="open" id="325">
19891989
<td><a href="https://cplusplus.github.io/CWG/issues/325.html">325</a></td>
@@ -1995,7 +1995,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
19951995
<td><a href="https://cplusplus.github.io/CWG/issues/326.html">326</a></td>
19961996
<td>CD1</td>
19971997
<td>Wording for definition of trivial constructor</td>
1998-
<td class="full" align="center">Yes</td>
1998+
<td class="full" align="center">Clang 3.1</td>
19991999
</tr>
20002000
<tr id="327">
20012001
<td><a href="https://cplusplus.github.io/CWG/issues/327.html">327</a></td>
@@ -2025,7 +2025,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
20252025
<td><a href="https://cplusplus.github.io/CWG/issues/331.html">331</a></td>
20262026
<td>CD1</td>
20272027
<td>Allowed copy constructor signatures</td>
2028-
<td class="full" align="center">Yes</td>
2028+
<td class="full" align="center">Clang 11</td>
20292029
</tr>
20302030
<tr id="332">
20312031
<td><a href="https://cplusplus.github.io/CWG/issues/332.html">332</a></td>
@@ -2073,7 +2073,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
20732073
<td><a href="https://cplusplus.github.io/CWG/issues/339.html">339</a></td>
20742074
<td>CD1</td>
20752075
<td>Overload resolution in operand of <TT>sizeof</TT> in constant expression</td>
2076-
<td class="full" align="center">Yes</td>
2076+
<td class="full" align="center">Clang 2.8</td>
20772077
</tr>
20782078
<tr id="340">
20792079
<td><a href="https://cplusplus.github.io/CWG/issues/340.html">340</a></td>
@@ -2151,7 +2151,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
21512151
<td><a href="https://cplusplus.github.io/CWG/issues/352.html">352</a></td>
21522152
<td>CD1</td>
21532153
<td>Nondeduced contexts</td>
2154-
<td class="full" align="center">Yes</td>
2154+
<td class="full" align="center">Clang 2.8</td>
21552155
</tr>
21562156
<tr id="353">
21572157
<td><a href="https://cplusplus.github.io/CWG/issues/353.html">353</a></td>
@@ -2247,7 +2247,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
22472247
<td><a href="https://cplusplus.github.io/CWG/issues/368.html">368</a></td>
22482248
<td>CD1</td>
22492249
<td>Uses of non-type parameters that should cause deduction to fail</td>
2250-
<td class="full" align="center">Yes</td>
2250+
<td class="full" align="center">Clang 3.6</td>
22512251
</tr>
22522252
<tr class="open" id="369">
22532253
<td><a href="https://cplusplus.github.io/CWG/issues/369.html">369</a></td>
@@ -2283,7 +2283,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
22832283
<td><a href="https://cplusplus.github.io/CWG/issues/374.html">374</a></td>
22842284
<td>CD2</td>
22852285
<td>Can explicit specialization outside namespace use qualified name?</td>
2286-
<td class="full" align="center">Yes</td>
2286+
<td class="full" align="center">Clang 7</td>
22872287
</tr>
22882288
<tr id="375">
22892289
<td><a href="https://cplusplus.github.io/CWG/issues/375.html">375</a></td>
@@ -2349,7 +2349,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
23492349
<td><a href="https://cplusplus.github.io/CWG/issues/385.html">385</a></td>
23502350
<td>CD1</td>
23512351
<td>How does protected member check of 11.5 interact with using-declarations?</td>
2352-
<td class="full" align="center">Yes</td>
2352+
<td class="full" align="center">Clang 2.8</td>
23532353
</tr>
23542354
<tr id="386">
23552355
<td><a href="https://cplusplus.github.io/CWG/issues/386.html">386</a></td>
@@ -2361,7 +2361,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
23612361
<td><a href="https://cplusplus.github.io/CWG/issues/387.html">387</a></td>
23622362
<td>CD1</td>
23632363
<td>Errors in example in 14.6.5</td>
2364-
<td class="full" align="center">Yes</td>
2364+
<td class="full" align="center">Clang 2.8</td>
23652365
</tr>
23662366
<tr id="388">
23672367
<td><a href="https://cplusplus.github.io/CWG/issues/388.html">388</a></td>
@@ -2379,13 +2379,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
23792379
<td><a href="https://cplusplus.github.io/CWG/issues/390.html">390</a></td>
23802380
<td>CD1</td>
23812381
<td>Pure virtual must be defined when implicitly called</td>
2382-
<td class="full" align="center">Yes</td>
2382+
<td class="full" align="center">Clang 3.3</td>
23832383
</tr>
23842384
<tr id="391">
23852385
<td><a href="https://cplusplus.github.io/CWG/issues/391.html">391</a></td>
23862386
<td>CD1</td>
23872387
<td>Require direct binding of short-lived references to rvalues</td>
2388-
<td class="full" align="center">Yes (C++11 onwards)</td>
2388+
<td class="full" align="center">Clang 2.8 (C++11 onwards)</td>
23892389
</tr>
23902390
<tr id="392">
23912391
<td><a href="https://cplusplus.github.io/CWG/issues/392.html">392</a></td>
@@ -2409,7 +2409,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
24092409
<td><a href="https://cplusplus.github.io/CWG/issues/395.html">395</a></td>
24102410
<td>NAD</td>
24112411
<td>Conversion operator template syntax</td>
2412-
<td class="full" align="center">Yes</td>
2412+
<td class="full" align="center">Clang 3.0</td>
24132413
</tr>
24142414
<tr id="396">
24152415
<td><a href="https://cplusplus.github.io/CWG/issues/396.html">396</a></td>

0 commit comments

Comments
 (0)