[clang] 14ba3f9 - [clang][NFC] Fill in historical data for C++ DRs with 'yes' availability
Vlad Serebrennikov via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 6 06:39:19 PST 2025
Author: Vlad Serebrennikov
Date: 2025-01-06T17:39:11+03:00
New Revision: 14ba3f9d07ea1664497c5d117120fb243ca221aa
URL: https://github.com/llvm/llvm-project/commit/14ba3f9d07ea1664497c5d117120fb243ca221aa
DIFF: https://github.com/llvm/llvm-project/commit/14ba3f9d07ea1664497c5d117120fb243ca221aa.diff
LOG: [clang][NFC] Fill in historical data for C++ DRs with 'yes' availability
Added:
Modified:
clang/test/CXX/drs/cwg0xx.cpp
clang/test/CXX/drs/cwg14xx.cpp
clang/test/CXX/drs/cwg15xx.cpp
clang/test/CXX/drs/cwg17xx.cpp
clang/test/CXX/drs/cwg18xx.cpp
clang/test/CXX/drs/cwg19xx.cpp
clang/test/CXX/drs/cwg1xx.cpp
clang/test/CXX/drs/cwg20xx.cpp
clang/test/CXX/drs/cwg21xx.cpp
clang/test/CXX/drs/cwg22xx.cpp
clang/test/CXX/drs/cwg23xx.cpp
clang/test/CXX/drs/cwg273.cpp
clang/test/CXX/drs/cwg27xx.cpp
clang/test/CXX/drs/cwg2xx.cpp
clang/test/CXX/drs/cwg3xx.cpp
clang/test/CXX/drs/cwg4xx.cpp
clang/test/CXX/drs/cwg5xx.cpp
clang/test/CXX/drs/cwg6xx.cpp
clang/test/CXX/drs/cwg7xx.cpp
clang/test/CXX/drs/cwg9xx.cpp
clang/www/cxx_dr_status.html
Removed:
################################################################################
diff --git a/clang/test/CXX/drs/cwg0xx.cpp b/clang/test/CXX/drs/cwg0xx.cpp
index e9de2347f4fbc2..15f469440c66f2 100644
--- a/clang/test/CXX/drs/cwg0xx.cpp
+++ b/clang/test/CXX/drs/cwg0xx.cpp
@@ -56,7 +56,7 @@ namespace cwg1 { // cwg1: no
}
} // namespace cwg1
-namespace cwg3 { // cwg3: yes
+namespace cwg3 { // cwg3: 2.7
template<typename T> struct A {};
template<typename T> void f(T) { A<T> a; } // #cwg3-f-T
template void f(int);
@@ -156,7 +156,7 @@ namespace cwg10 { // cwg10: dup 45
};
} // namespace cwg10
-namespace cwg11 { // cwg11: yes
+namespace cwg11 { // cwg11: 2.7
template<typename T> struct A : T {
using typename T::U;
U u;
@@ -221,7 +221,7 @@ namespace cwg14 { // cwg14: 3.4
// expected-note@#cwg14-Y-U {{candidate found by name lookup is 'cwg14::Y::U'}}
} // namespace cwg14
-namespace cwg15 { // cwg15: yes
+namespace cwg15 { // cwg15: 2.7
template<typename T> void f(int); // #cwg15-f-decl-first
template<typename T> void f(int = 0);
// expected-error at -1 {{default arguments cannot be added to a function template that has already been declared}}
@@ -250,7 +250,7 @@ namespace cwg16 { // cwg16: 2.8
};
} // namespace cwg16
-namespace cwg17 { // cwg17: yes
+namespace cwg17 { // cwg17: 2.7
class A {
int n;
int f();
@@ -311,7 +311,7 @@ namespace cwg22 { // cwg22: sup 481
template<typename T = T> struct Y;
} // namespace cwg22
-namespace cwg23 { // cwg23: yes
+namespace cwg23 { // cwg23: 2.7
template<typename T> void f(T, T); // #cwg23-f-T-T
template<typename T> void f(T, int); // #cwg23-f-T-int
void g() { f(0, 0); }
@@ -322,7 +322,7 @@ namespace cwg23 { // cwg23: yes
// cwg24: na
-namespace cwg25 { // cwg25: yes
+namespace cwg25 { // cwg25: 4
struct A {
void f() throw(int);
// since-cxx17-error at -1 {{ISO C++17 does not allow dynamic exception specifications}}
@@ -357,7 +357,7 @@ namespace cwg25 { // cwg25: yes
}
} // namespace cwg25
-namespace cwg26 { // cwg26: yes
+namespace cwg26 { // cwg26: 2.7
struct A { A(A, const A & = A()); };
// expected-error at -1 {{copy constructor must pass its first argument by reference}}
struct B {
@@ -377,7 +377,7 @@ namespace cwg26 { // cwg26: yes
};
} // namespace cwg26
-namespace cwg27 { // cwg27: yes
+namespace cwg27 { // cwg27: 2.7
enum E { e } n;
E &m = true ? n : n;
} // namespace cwg27
@@ -623,7 +623,7 @@ namespace example4 {
// cwg37: sup 475
-namespace cwg38 { // cwg38: yes
+namespace cwg38 { // cwg38: 2.7
template<typename T> struct X {};
template<typename T> X<T> operator+(X<T> a, X<T> b) { return a; }
template X<int> operator+<int>(X<int>, X<int>);
@@ -720,11 +720,11 @@ namespace cwg39 { // cwg39: no
// cwg40: na
-namespace cwg41 { // cwg41: yes
+namespace cwg41 { // cwg41: 2.7
struct S f(S);
} // namespace cwg41
-namespace cwg42 { // cwg42: yes
+namespace cwg42 { // cwg42: 2.7
struct A { static const int k = 0; };
struct B : A { static const int k = A::k; };
} // namespace cwg42
@@ -738,7 +738,7 @@ namespace cwg44 { // cwg44: sup 727
};
} // namespace cwg44
-namespace cwg45 { // cwg45: yes
+namespace cwg45 { // cwg45: 2.7
class A {
class B {};
class C : B {};
@@ -746,7 +746,7 @@ namespace cwg45 { // cwg45: yes
};
} // namespace cwg45
-namespace cwg46 { // cwg46: yes
+namespace cwg46 { // cwg46: 2.7
template<typename> struct A { template<typename> struct B {}; };
template template struct A<int>::B<int>;
// expected-error at -1 {{expected unqualified-id}}
@@ -766,7 +766,7 @@ namespace cwg47 { // cwg47: sup 329
void g() { f(); }
} // namespace cwg47
-namespace cwg48 { // cwg48: yes
+namespace cwg48 { // cwg48: 2.7
namespace {
struct S {
static const int m = 0;
@@ -808,7 +808,7 @@ namespace cwg49 { // cwg49: 2.8
// since-cxx17-note@#cwg49-q {{declared here}}
} // namespace cwg49
-namespace cwg50 { // cwg50: yes
+namespace cwg50 { // cwg50: 2.7
struct X; // #cwg50-X
extern X *p;
X *q = (X*)p;
@@ -842,7 +842,7 @@ namespace cwg52 { // cwg52: 2.8
// expected-note@#cwg52-B {{declared private here}}
} // namespace cwg52
-namespace cwg53 { // cwg53: yes
+namespace cwg53 { // cwg53: 2.7
int n = 0;
enum E { e } x = static_cast<E>(n);
} // namespace cwg53
@@ -901,12 +901,12 @@ namespace cwg54 { // cwg54: 2.8
// expected-error at -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}}
} // namespace cwg54
-namespace cwg55 { // cwg55: yes
+namespace cwg55 { // cwg55: 2.7
enum E { e = 5 };
static_assert(e + 1 == 6, "");
} // namespace cwg55
-namespace cwg56 { // cwg56: yes
+namespace cwg56 { // cwg56: 2.7
struct A {
typedef int T; // #cwg56-typedef-int-T-first
typedef int T;
@@ -933,7 +933,7 @@ namespace cwg58 { // cwg58: 3.1
#endif
} // namespace cwg58
-namespace cwg59 { // cwg59: yes
+namespace cwg59 { // cwg59: 2.7
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-volatile"
template<typename T> struct convert_to { operator T() const; };
@@ -990,7 +990,7 @@ namespace cwg59 { // cwg59: yes
#pragma clang diagnostic pop
} // namespace cwg59
-namespace cwg60 { // cwg60: yes
+namespace cwg60 { // cwg60: 2.7
void f(int &);
int &f(...);
const int k = 0;
@@ -1067,13 +1067,13 @@ namespace cwg62 { // cwg62: 2.9
}
} // namespace cwg62
-namespace cwg63 { // cwg63: yes
+namespace cwg63 { // cwg63: 2.7
template<typename T> struct S { typename T::error e; };
extern S<int> *p;
void *q = p;
} // namespace cwg63
-namespace cwg64 { // cwg64: yes
+namespace cwg64 { // cwg64: 2.7
template<class T> void f(T);
template<class T> void f(T*);
template<> void f(int*);
@@ -1136,7 +1136,7 @@ namespace cwg69 { // cwg69: 9
// cxx98-note@#cwg69-f {{non-type template argument refers to function here}}
} // namespace cwg69
-namespace cwg70 { // cwg70: yes
+namespace cwg70 { // cwg70: 2.7
template<int> struct A {};
template<int I, int J> int f(int (&)[I + J], A<I>, A<J>);
int arr[7];
@@ -1155,26 +1155,26 @@ namespace cwg73 { // cwg73: sup 1652
#endif
} // namespace cwg73
-namespace cwg74 { // cwg74: yes
+namespace cwg74 { // cwg74: 2.7
enum E { k = 5 };
int (*p)[k] = new int[k][k];
} // namespace cwg74
-namespace cwg75 { // cwg75: yes
+namespace cwg75 { // cwg75: 2.7
struct S {
static int n = 0;
// expected-error at -1 {{non-const static data member must be initialized out of line}}
};
} // namespace cwg75
-namespace cwg76 { // cwg76: yes
+namespace cwg76 { // cwg76: 2.7
const volatile int n = 1;
static_assert(n, "");
// expected-error at -1 {{static assertion expression is not an integral constant expression}}
// expected-note at -2 {{read of volatile-qualified type 'const volatile int' is not allowed in a constant expression}}
} // namespace cwg76
-namespace cwg77 { // cwg77: yes
+namespace cwg77 { // cwg77: 2.7
struct A {
struct B {};
friend struct B;
@@ -1213,13 +1213,13 @@ namespace cwg80 { // cwg80: 2.9
// cwg81: na
// cwg82: dup 48
-namespace cwg83 { // cwg83: yes
+namespace cwg83 { // cwg83: 2.7
int &f(const char*);
char &f(char *);
int &k = f("foo");
} // namespace cwg83
-namespace cwg84 { // cwg84: yes
+namespace cwg84 { // cwg84: 2.7
struct B;
struct A { operator B() const; };
struct C {};
@@ -1299,7 +1299,7 @@ namespace cwg88 { // cwg88: 2.8
// cwg89: na
-namespace cwg90 { // cwg90: yes
+namespace cwg90 { // cwg90: 2.7
struct A {
template<typename T> friend void cwg90_f(T);
};
@@ -1333,7 +1333,7 @@ namespace cwg90 { // cwg90: yes
}
} // namespace cwg90
-namespace cwg91 { // cwg91: yes
+namespace cwg91 { // cwg91: 2.7
union U { friend int f(U); };
int k = f(U());
} // namespace cwg91
@@ -1383,7 +1383,7 @@ namespace cwg92 { // cwg92: 4 c++17
// cwg93: na
-namespace cwg94 { // cwg94: yes
+namespace cwg94 { // cwg94: 2.7
struct A { static const int n = 5; };
int arr[A::n];
} // namespace cwg94
@@ -1426,14 +1426,14 @@ namespace cwg96 { // cwg96: sup P1787
}
} // namespace cwg96
-namespace cwg97 { // cwg97: yes
+namespace cwg97 { // cwg97: 2.7
struct A {
static const int a = false;
static const int b = !a;
};
} // namespace cwg97
-namespace cwg98 { // cwg98: yes
+namespace cwg98 { // cwg98: 2.7
void test(int n) {
switch (n) {
try { // #cwg98-try
diff --git a/clang/test/CXX/drs/cwg14xx.cpp b/clang/test/CXX/drs/cwg14xx.cpp
index 8f9de5373e757b..51bc9614299a57 100644
--- a/clang/test/CXX/drs/cwg14xx.cpp
+++ b/clang/test/CXX/drs/cwg14xx.cpp
@@ -78,7 +78,7 @@ namespace cwg1432 { // cwg1432: 16
#endif
} // namespace cwg1432
-namespace cwg1443 { // cwg1443: yes
+namespace cwg1443 { // cwg1443: 2.7
struct A {
int i;
A() { void foo(int=i); }
diff --git a/clang/test/CXX/drs/cwg15xx.cpp b/clang/test/CXX/drs/cwg15xx.cpp
index d10890ee3fd153..30ec63999ca285 100644
--- a/clang/test/CXX/drs/cwg15xx.cpp
+++ b/clang/test/CXX/drs/cwg15xx.cpp
@@ -355,7 +355,7 @@ namespace cwg1560 { // cwg1560: 3.5
const X &x = true ? get() : throw 0;
} // namespace cwg1560
-namespace cwg1563 { // cwg1563: yes
+namespace cwg1563 { // cwg1563: 3.1
#if __cplusplus >= 201103L
double bar(double) { return 0.0; }
float bar(float) { return 0.0f; }
diff --git a/clang/test/CXX/drs/cwg17xx.cpp b/clang/test/CXX/drs/cwg17xx.cpp
index 04bf637543a296..8c4f916a606a44 100644
--- a/clang/test/CXX/drs/cwg17xx.cpp
+++ b/clang/test/CXX/drs/cwg17xx.cpp
@@ -225,8 +225,8 @@ namespace cwg1778 { // cwg1778: 9
// cwg1779 is in cwg177x.cpp
-namespace cwg1794 { // cwg1794: yes
- // NB: dup 1710
+namespace cwg1794 { // cwg1794: 2.7
+ // NB: dup 1710
#if __cplusplus >= 201103L
template <template <typename> class Template> struct Internal {
template <typename Arg> using Bind = Template<Arg>;
diff --git a/clang/test/CXX/drs/cwg18xx.cpp b/clang/test/CXX/drs/cwg18xx.cpp
index e085b38eb31276..626473f11d3ec5 100644
--- a/clang/test/CXX/drs/cwg18xx.cpp
+++ b/clang/test/CXX/drs/cwg18xx.cpp
@@ -198,7 +198,7 @@ namespace cwg1813 { // cwg1813: 7
static_assert(!__is_standard_layout(U), "");
}
-namespace cwg1814 { // cwg1814: yes
+namespace cwg1814 { // cwg1814: 3.1
#if __cplusplus >= 201103L
void test() {
auto lam = [](int x = 42) { return x; };
@@ -296,7 +296,7 @@ struct A {
};
} // namespace cwg1821
-namespace cwg1822 { // cwg1822: yes
+namespace cwg1822 { // cwg1822: 3.1
#if __cplusplus >= 201103L
double a;
auto x = [] (int a) {
diff --git a/clang/test/CXX/drs/cwg19xx.cpp b/clang/test/CXX/drs/cwg19xx.cpp
index a01082a440278d..55a7c7cbba66fc 100644
--- a/clang/test/CXX/drs/cwg19xx.cpp
+++ b/clang/test/CXX/drs/cwg19xx.cpp
@@ -6,7 +6,9 @@
// RUN: %clang_cc1 -std=c++23 %s -verify=expected,since-cxx14,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors
// RUN: %clang_cc1 -std=c++2c %s -verify=expected,since-cxx14,since-cxx11 -fexceptions -fcxx-exceptions -pedantic-errors
-namespace std { struct type_info; }
+namespace std {
+struct type_info;
+} // namespace std
namespace cwg1900 { // cwg1900: 2.7
// See the test for CWG1477 for detailed analysis
diff --git a/clang/test/CXX/drs/cwg1xx.cpp b/clang/test/CXX/drs/cwg1xx.cpp
index f968ab9c20b276..98eb86c9290097 100644
--- a/clang/test/CXX/drs/cwg1xx.cpp
+++ b/clang/test/CXX/drs/cwg1xx.cpp
@@ -17,7 +17,7 @@
#define __enable_constant_folding
#endif
-namespace cwg100 { // cwg100: yes
+namespace cwg100 { // cwg100: 2.7
template<const char (*)[4]> struct A {}; // #cwg100-A
template<const char (&)[4]> struct B {}; // #cwg100-B
template<const char *> struct C {}; // #cwg100-C
@@ -53,7 +53,7 @@ namespace cwg101 { // cwg101: 3.5
typedef unsigned size_t;
} // namespace cwg101
-namespace cwg102 { // cwg102: yes
+namespace cwg102 { // cwg102: 2.7
namespace A {
template<typename T> T f(T a, T b) { return a + b; }
// expected-error at -1 {{call to function 'operator+' that is neither visible in the template definition nor found by argument-dependent lookup}}
@@ -87,7 +87,7 @@ namespace cwg106 { // cwg106: sup 540
// expected-warning at -1 {{'const' qualifier on reference type 'r2' (aka 'const int &') has no effect}}
} // namespace cwg106
-namespace cwg107 { // cwg107: yes
+namespace cwg107 { // cwg107: 2.7
struct S {};
extern "C" S operator+(S, S) { return S(); }
} // namespace cwg107
@@ -103,7 +103,7 @@ namespace cwg108 { // cwg108: 2.9
template<> struct A<int>::B { int X; };
} // namespace cwg108
-namespace cwg109 { // cwg109: yes
+namespace cwg109 { // cwg109: 2.8
struct A { template<typename T> void f(T); };
template<typename T> struct B : T {
using T::template f;
@@ -144,7 +144,7 @@ namespace cwg111 { // cwg111: dup 535
// expected-note@#cwg111-B {{candidate constructor not viable: requires 0 arguments, but 1 was provided}}
} // namespace cwg111
-namespace cwg112 { // cwg112: yes
+namespace cwg112 { // cwg112: 3.1
struct T { int n; };
typedef T Arr[1];
@@ -164,7 +164,7 @@ namespace cwg112 { // cwg112: yes
X<a4> x4;
} // namespace cwg112
-namespace cwg113 { // cwg113: yes
+namespace cwg113 { // cwg113: 2.7
extern void (*p)();
void f() {
no_such_function();
@@ -175,7 +175,7 @@ namespace cwg113 { // cwg113: yes
void (*p)() = &g;
} // namespace cwg113
-namespace cwg114 { // cwg114: yes
+namespace cwg114 { // cwg114: 2.7
struct A {
virtual void f(int) = 0; // #cwg114-A-f
};
@@ -296,7 +296,7 @@ namespace cwg115 { // cwg115: 3.0
#endif
} // namespace cwg115
-namespace cwg116 { // cwg116: yes
+namespace cwg116 { // cwg116: 2.7
template<int> struct A {};
template<int N> void f(A<N>) {} // #cwg116-f-N
template<int M> void f(A<M>) {}
@@ -313,7 +313,7 @@ namespace cwg116 { // cwg116: yes
// cwg119: na
// cwg120: na
-namespace cwg121 { // cwg121: yes
+namespace cwg121 { // cwg121: 2.7
struct X {
template<typename T> struct Y {};
};
@@ -326,7 +326,7 @@ namespace cwg121 { // cwg121: yes
Z<X> z;
} // namespace cwg121
-namespace cwg122 { // cwg122: yes
+namespace cwg122 { // cwg122: 2.7
template<typename T> void f();
void g() { f<int>(); }
} // namespace cwg122
@@ -334,7 +334,7 @@ namespace cwg122 { // cwg122: yes
// cwg123: na
// cwg124 is in cwg124.cpp
-// cwg125: yes
+// cwg125: 2.7
struct cwg125_A { struct cwg125_B {}; }; // #cwg125_B
cwg125_A::cwg125_B cwg125_C();
namespace cwg125_B { cwg125_A cwg125_C(); }
@@ -478,7 +478,7 @@ namespace cwg127 { // cwg127: 2.9
A<int> *q = new ("") A<int>; // #cwg127-q
} // namespace cwg127
-namespace cwg128 { // cwg128: yes
+namespace cwg128 { // cwg128: 2.7
enum E1 { e1 } x = e1;
enum E2 { e2 } y = static_cast<E2>(x), z = static_cast<E2>(e1);
} // namespace cwg128
@@ -503,7 +503,7 @@ namespace cwg132 { // cwg132: no
// cwg133: dup 87
// cwg134: na
-namespace cwg135 { // cwg135: yes
+namespace cwg135 { // cwg135: 2.7
struct A {
A f(A a) { return a; }
friend A g(A a) { return a; }
@@ -559,7 +559,7 @@ namespace cwg136 { // cwg136: 3.4
};
} // namespace cwg136
-namespace cwg137 { // cwg137: yes
+namespace cwg137 { // cwg137: 2.7
extern void *p;
extern const void *cp;
extern volatile void *vp;
@@ -657,7 +657,7 @@ struct Data {
} // namespace example3
} // namespace cwg138
-namespace cwg139 { // cwg139: yes
+namespace cwg139 { // cwg139: 2.7
namespace example1 {
typedef int f; // #cwg139-typedef-f
struct A {
@@ -679,7 +679,7 @@ namespace cwg139 { // cwg139: yes
}
} // namespace cwg139
-namespace cwg140 { // cwg140: yes
+namespace cwg140 { // cwg140: 2.7
void f(int *const) {} // #cwg140-f-first
void f(int[3]) {}
// expected-error at -1 {{redefinition of 'f'}}
@@ -783,7 +783,7 @@ namespace cwg142 { // cwg142: 2.8
}
} // namespace cwg142
-namespace cwg143 { // cwg143: yes
+namespace cwg143 { // cwg143: 2.7
namespace A { struct X; }
namespace B { void f(A::X); }
namespace A {
@@ -795,7 +795,7 @@ namespace cwg143 { // cwg143: yes
}
} // namespace cwg143
-namespace cwg145 { // cwg145: yes
+namespace cwg145 { // cwg145: 2.7
void f(bool b) {
++b;
// cxx98-14-warning at -1 {{incrementing expression of type bool is deprecated and incompatible with C++17}}
@@ -806,7 +806,7 @@ namespace cwg145 { // cwg145: yes
}
} // namespace cwg145
-namespace cwg147 { // cwg147: yes
+namespace cwg147 { // cwg147: 2.7
namespace example1 {
template<typename> struct A {
template<typename T> A(T);
@@ -834,7 +834,7 @@ namespace cwg147 { // cwg147: yes
}
} // namespace cwg147
-namespace cwg148 { // cwg148: yes
+namespace cwg148 { // cwg148: 2.7
struct A { int A::*p; };
static_assert(__is_pod(int(A::*)), "");
static_assert(__is_pod(A), "");
@@ -888,7 +888,7 @@ namespace cwg151 { // cwg151: 3.1
static_assert(__enable_constant_folding(p() == 0), "");
} // namespace cwg151
-namespace cwg152 { // cwg152: yes
+namespace cwg152 { // cwg152: 2.7
struct A {
A(); // #cwg152-A-ctor
explicit A(const A&); // #cwg152-A-explicit-ctor
@@ -909,7 +909,7 @@ namespace cwg152 { // cwg152: yes
// cwg153: na
-namespace cwg154 { // cwg154: yes
+namespace cwg154 { // cwg154: 2.7
union { int a; };
// expected-error at -1 {{nonymous unions at namespace or global scope must be declared 'static'}}
namespace {
@@ -992,7 +992,7 @@ namespace cwg162 { // cwg162: 19
// cwg163: na
-namespace cwg164 { // cwg164: yes
+namespace cwg164 { // cwg164: 2.7
void f(int);
template <class T> int g(T t) { return f(t); }
@@ -1057,7 +1057,7 @@ namespace cwg168 { // cwg168: no
q b = &S::f;
} // namespace cwg168
-namespace cwg169 { // cwg169: yes
+namespace cwg169 { // cwg169: 3.4
template<typename> struct A { int n; };
struct B {
template<typename> struct C;
@@ -1087,7 +1087,7 @@ namespace cwg171 {
// expected-note@#cwg171b-int {{declared in global scope here}}
} // namespace cwg171
-namespace cwg172 { // cwg172: yes
+namespace cwg172 { // cwg172: 2.7
enum { zero };
static_assert(-1 < zero, "");
@@ -1121,7 +1121,7 @@ namespace cwg172 { // cwg172: yes
static_assert(-f > 0, "");
} // namespace cwg172
-namespace cwg173 { // cwg173: yes
+namespace cwg173 { // cwg173: 2.7
static_assert('0' + 1 == '1' && '0' + 2 == '2' && '0' + 3 == '3' &&
'0' + 4 == '4' && '0' + 5 == '5' && '0' + 6 == '6' &&
'0' + 7 == '7' && '0' + 8 == '8' && '0' + 9 == '9', "");
@@ -1181,7 +1181,7 @@ namespace cwg176 { // cwg176: 3.1
};
} // namespace cwg176
-namespace cwg177 { // cwg177: yes
+namespace cwg177 { // cwg177: 2.7
struct B {};
struct A {
A(A &); // #cwg177-A-copy-ctor
@@ -1202,7 +1202,7 @@ namespace cwg177 { // cwg177: yes
// expected-note@#cwg177-C-copy-ctor {{candidate constructor not viable: expects an lvalue for 1st argument}}
} // namespace cwg177
-namespace cwg178 { // cwg178: yes
+namespace cwg178 { // cwg178: 3.1
static_assert(int() == 0, "");
#if __cplusplus >= 201103L
static_assert(int{} == 0, "");
@@ -1215,7 +1215,7 @@ namespace cwg178 { // cwg178: yes
#endif
} // namespace cwg178
-namespace cwg179 { // cwg179: yes
+namespace cwg179 { // cwg179: 2.7
void f();
int n = &f - &f;
// expected-error at -1 {{arithmetic on pointers to the function type 'void ()'}}
@@ -1231,7 +1231,7 @@ namespace cwg180 { // cwg180: 2.8
};
} // namespace cwg180
-namespace cwg181 { // cwg181: yes
+namespace cwg181 { // cwg181: 2.7
namespace X {
template <template X<class T> > struct A { };
// expected-error at -1 +{{}}
@@ -1279,7 +1279,7 @@ namespace cwg183 { // cwg183: sup 382
};
} // namespace cwg183
-namespace cwg184 { // cwg184: yes
+namespace cwg184 { // cwg184: 2.7
template<typename T = float> struct B {};
template<template<typename TT = float> class T> struct A {
@@ -1311,7 +1311,7 @@ namespace cwg187 { // cwg187: sup 481
typedef A<1, 1> T;
} // namespace cwg187
-namespace cwg188 { // cwg188: yes
+namespace cwg188 { // cwg188: 2.7
char c[10];
static_assert(sizeof(0, c) == 10, "");
} // namespace cwg188
@@ -1337,7 +1337,7 @@ static_assert(__is_layout_compatible(A, B), "");
} // namespace cwg190
int cwg191_j;
-namespace cwg191 { // cwg191: yes
+namespace cwg191 { // cwg191: 2.7
namespace example1 {
struct outer {
static int i;
@@ -1376,7 +1376,7 @@ struct S {
// cwg193 is in cwg193.cpp
-namespace cwg194 { // cwg194: yes
+namespace cwg194 { // cwg194: 2.7
struct A {
A();
void A();
@@ -1392,7 +1392,7 @@ namespace cwg194 { // cwg194: yes
};
} // namespace cwg194
-namespace cwg195 { // cwg195: yes
+namespace cwg195 { // cwg195: 2.7
void f();
int *p = (int*)&f;
// cxx98-error at -1 {{cast between pointer-to-function and pointer-to-object is an extension}}
@@ -1400,7 +1400,7 @@ namespace cwg195 { // cwg195: yes
// cxx98-error at -1 {{cast between pointer-to-function and pointer-to-object is an extension}}
} // namespace cwg195
-namespace cwg197 { // cwg197: yes
+namespace cwg197 { // cwg197: 2.7
char &f(char);
template <class T> void g(T t) {
@@ -1424,7 +1424,7 @@ namespace cwg197 { // cwg197: yes
}
} // namespace cwg197
-namespace cwg198 { // cwg198: yes
+namespace cwg198 { // cwg198: 2.9
struct A {
int n;
struct B {
diff --git a/clang/test/CXX/drs/cwg20xx.cpp b/clang/test/CXX/drs/cwg20xx.cpp
index d53d972306d684..141a1012aef933 100644
--- a/clang/test/CXX/drs/cwg20xx.cpp
+++ b/clang/test/CXX/drs/cwg20xx.cpp
@@ -99,7 +99,7 @@ static_assert(__is_same(decltype(a), decltype(b)));
#endif
} // namespace cwg2049
-namespace cwg2061 { // cwg2061: yes
+namespace cwg2061 { // cwg2061: 2.7
#if __cplusplus >= 201103L
namespace A {
inline namespace b {
diff --git a/clang/test/CXX/drs/cwg21xx.cpp b/clang/test/CXX/drs/cwg21xx.cpp
index 2f337afd0e8672..42a7c4d7bbdedb 100644
--- a/clang/test/CXX/drs/cwg21xx.cpp
+++ b/clang/test/CXX/drs/cwg21xx.cpp
@@ -66,7 +66,7 @@ namespace cwg2100 { // cwg2100: 12
};
} // namespace cwg2100
-namespace cwg2103 { // cwg2103: yes
+namespace cwg2103 { // cwg2103: 2.7
void f() {
int a;
int &r = a; // #cwg2103-r
@@ -287,7 +287,7 @@ static_assert(!noexcept(typeid(*static_cast<D*>(nullptr))), "");
#endif
} // namespace cwg2191
-namespace cwg2180 { // cwg2180: yes
+namespace cwg2180 { // cwg2180: 3.0
class A {
A &operator=(const A &); // #cwg2180-A-copy
A &operator=(A &&); // #cwg2180-A-move
diff --git a/clang/test/CXX/drs/cwg22xx.cpp b/clang/test/CXX/drs/cwg22xx.cpp
index 46ae73212b2433..d93070ef3804dd 100644
--- a/clang/test/CXX/drs/cwg22xx.cpp
+++ b/clang/test/CXX/drs/cwg22xx.cpp
@@ -19,7 +19,7 @@ void f() {
#endif
} // namespace cwg2211
-namespace cwg2213 { // cwg2213: yes
+namespace cwg2213 { // cwg2213: 2.7
template <typename T, typename U>
struct A;
diff --git a/clang/test/CXX/drs/cwg23xx.cpp b/clang/test/CXX/drs/cwg23xx.cpp
index 7ab66ce89f2868..48db83107d76a1 100644
--- a/clang/test/CXX/drs/cwg23xx.cpp
+++ b/clang/test/CXX/drs/cwg23xx.cpp
@@ -333,7 +333,7 @@ namespace cwg2358 { // cwg2358: 16
// CWG2363 was closed as NAD, but its resolution does affirm that
// a friend declaration cannot have an opaque-enumm-specifier.
-namespace cwg2363 { // cwg2363: yes
+namespace cwg2363 { // cwg2363: 19
#if __cplusplus >= 201103L
enum class E0;
enum E1 : int;
diff --git a/clang/test/CXX/drs/cwg273.cpp b/clang/test/CXX/drs/cwg273.cpp
index 934ebdb919a4bc..532f1a1abb7351 100644
--- a/clang/test/CXX/drs/cwg273.cpp
+++ b/clang/test/CXX/drs/cwg273.cpp
@@ -10,7 +10,7 @@
#include <stdarg.h>
#include <stddef.h>
-namespace cwg273 { // cwg273: yes
+namespace cwg273 { // cwg273: 2.7
struct A {
int n;
};
diff --git a/clang/test/CXX/drs/cwg27xx.cpp b/clang/test/CXX/drs/cwg27xx.cpp
index b5e2368d921fb5..7caf36a9f23b25 100644
--- a/clang/test/CXX/drs/cwg27xx.cpp
+++ b/clang/test/CXX/drs/cwg27xx.cpp
@@ -174,7 +174,7 @@ static_assert(!__is_layout_compatible(StructWithAnonUnion, StructWithAnonUnion3)
#endif
} // namespace cwg2759
-namespace cwg2770 { // cwg2770: 20
+namespace cwg2770 { // cwg2770: 20 open 2023-07-14
#if __cplusplus >= 202002L
template<typename T>
struct B {
diff --git a/clang/test/CXX/drs/cwg2xx.cpp b/clang/test/CXX/drs/cwg2xx.cpp
index 9ac93d78d747e2..dde3369b41f778 100644
--- a/clang/test/CXX/drs/cwg2xx.cpp
+++ b/clang/test/CXX/drs/cwg2xx.cpp
@@ -44,7 +44,7 @@ namespace cwg202 { // cwg202: 3.1
// cwg204: sup 820
-namespace cwg206 { // cwg206: yes
+namespace cwg206 { // cwg206: 2.7
struct S; // #cwg206-S
template<typename T> struct Q { S s; };
// expected-error at -1 {{field has incomplete type 'S'}}
@@ -54,7 +54,7 @@ namespace cwg206 { // cwg206: yes
// expected-note@#cwg206-S {{forward declaration of 'cwg206::S'}}
} // namespace cwg206
-namespace cwg207 { // cwg207: yes
+namespace cwg207 { // cwg207: 2.7
class A {
protected:
static void f() {}
@@ -84,7 +84,7 @@ namespace cwg209 { // cwg209: 3.2
// cwg210 is in cwg210.cpp
-namespace cwg211 { // cwg211: yes
+namespace cwg211 { // cwg211: 2.7
struct A {
A() try {
throw 0;
@@ -95,7 +95,7 @@ namespace cwg211 { // cwg211: yes
};
} // namespace cwg211
-namespace cwg213 { // cwg213: yes
+namespace cwg213 { // cwg213: 2.7
template <class T> struct A : T {
void h(T t) {
char &r1 = f(t);
@@ -114,7 +114,7 @@ namespace cwg213 { // cwg213: yes
template void A<B>::h(B); // #cwg213-instantiation
} // namespace cwg213
-namespace cwg214 { // cwg214: yes
+namespace cwg214 { // cwg214: 2.7
template<typename T, typename U> T checked_cast(U from) { U::error; }
template<typename T, typename U> T checked_cast(U *from);
class C {};
@@ -153,7 +153,7 @@ namespace cwg216 { // cwg216: no
void g(S s, S::E e) { s.f(e); }
} // namespace cwg216
-namespace cwg217 { // cwg217: yes
+namespace cwg217 { // cwg217: 2.7
template<typename T> struct S {
void f(int);
};
@@ -161,7 +161,7 @@ namespace cwg217 { // cwg217: yes
// expected-error at -1 {{default arguments cannot be added to an out-of-line definition of a member of a class template}}
} // namespace cwg217
-namespace cwg218 { // cwg218: yes
+namespace cwg218 { // cwg218: 2.7
// NB: also dup 405
namespace A {
struct S {};
@@ -412,14 +412,16 @@ namespace cwg226 { // cwg226: no
int x = foo(0, 0);
} // namespace cwg226
-void cwg227(bool b) { // cwg227: yes
+namespace cwg227 { // cwg227: 2.7
+void f(bool b) {
if (b)
int n;
else
int n;
}
+} // namespace cwg227
-namespace cwg228 { // cwg228: yes
+namespace cwg228 { // cwg228: 2.7
template <class T> struct X {
void f();
};
@@ -444,7 +446,7 @@ namespace cwg230 { // cwg230: 3.0
};
} // namespace cwg230
-namespace cwg231 { // cwg231: yes
+namespace cwg231 { // cwg231: 2.7
namespace outer {
namespace inner {
int i; // #cwg231-i
@@ -471,7 +473,7 @@ namespace cwg237 { // cwg237: dup 470
template struct B<int>; // ok
} // namespace cwg237
-namespace cwg239 { // cwg239: yes
+namespace cwg239 { // cwg239: 2.7
namespace NS {
class T {};
void f(T);
@@ -489,7 +491,7 @@ namespace cwg239 { // cwg239: yes
// cwg240: dup 616
-namespace cwg241 { // cwg241: yes
+namespace cwg241 { // cwg241: 9
namespace A {
struct B {};
template <int X> void f(); // #cwg241-A-f
@@ -526,7 +528,7 @@ namespace cwg241 { // cwg241: yes
}
} // namespace cwg241
-namespace cwg243 { // cwg243: yes
+namespace cwg243 { // cwg243: 2.8
struct B;
struct A {
A(B); // #cwg243-A
@@ -636,7 +638,7 @@ namespace cwg244 { // cwg244: 11
}
} // namespace cwg244
-namespace cwg245 { // cwg245: yes
+namespace cwg245 { // cwg245: 2.8
struct S {
enum E {}; // #cwg245-E
class E *p;
@@ -658,7 +660,7 @@ X: ;
};
} // namespace cwg246
-namespace cwg247 { // cwg247: yes
+namespace cwg247 { // cwg247: 2.7
struct A {};
struct B : A {
void f();
@@ -688,12 +690,12 @@ namespace cwg248 { // cwg248: sup P1949
int \u040d\u040e = 0;
} // namespace cwg248
-namespace cwg249 { // cwg249: yes
+namespace cwg249 { // cwg249: 2.7
template<typename T> struct X { void f(); };
template<typename T> void X<T>::f() {}
} // namespace cwg249
-namespace cwg250 { // cwg250: yes
+namespace cwg250 { // cwg250: 2.7
typedef void (*FPtr)(double x[]);
template<int I> void f(double x[]);
@@ -770,10 +772,10 @@ namespace cwg254 { // cwg254: 2.9
A<C>::type n; // #cwg254-instantiation
} // namespace cwg254
-namespace cwg255 { // cwg255: yes
+namespace cwg255 { // cwg255: 2.7
struct S {
- void operator delete(void *){};
- void operator delete(void *, int){};
+ void operator delete(void *){}
+ void operator delete(void *, int){}
};
void f(S *p) { delete p; }
} // namespace cwg255
@@ -907,7 +909,7 @@ namespace cwg261 { // cwg261: no
#pragma clang diagnostic pop
} // namespace cwg261
-namespace cwg262 { // cwg262: yes
+namespace cwg262 { // cwg262: 2.7
int f(int = 0, ...);
int k = f();
int l = f(0);
@@ -939,7 +941,7 @@ namespace cwg263 { // cwg263: 3.3
// cwg269: na
// cwg270: na
-namespace cwg272 { // cwg272: yes
+namespace cwg272 { // cwg272: 2.7
struct X {
void f() {
this->~X();
@@ -1091,7 +1093,7 @@ namespace cwg281 { // cwg281: no
};
} // namespace cwg281
-namespace cwg283 { // cwg283: yes
+namespace cwg283 { // cwg283: 2.7
template<typename T> // #cwg283-template
struct S {
friend class T;
@@ -1141,7 +1143,7 @@ namespace cwg284 { // cwg284: no
class D::Z z2; // ok per cwg417
} // namespace cwg284
-namespace cwg285 { // cwg285: yes
+namespace cwg285 { // cwg285: 2.7
template<typename T> void f(T, int); // #cwg285-f-T-int
template<typename T> void f(int, T); // #cwg285-f-int-T
template<> void f<int>(int, int) {}
@@ -1168,7 +1170,7 @@ namespace cwg286 { // cwg286: 2.8
// cwg288: na
-namespace cwg289 { // cwg289: yes
+namespace cwg289 { // cwg289: 2.7
struct A; // #cwg289-A
struct B : A {};
// expected-error at -1 {{base class has incomplete type}}
@@ -1231,7 +1233,7 @@ namespace cwg295 { // cwg295: 3.7
// expected-warning at -1 {{'volatile' qualifier on function type 'U' (aka 'int ()') has no effect}}
} // namespace cwg295
-namespace cwg296 { // cwg296: yes
+namespace cwg296 { // cwg296: 2.7
struct A {
static operator int() { return 0; }
// expected-error at -1 {{conversion function must be a non-static member function}}
diff --git a/clang/test/CXX/drs/cwg3xx.cpp b/clang/test/CXX/drs/cwg3xx.cpp
index d7319d465a93db..b5e07a66bb4eda 100644
--- a/clang/test/CXX/drs/cwg3xx.cpp
+++ b/clang/test/CXX/drs/cwg3xx.cpp
@@ -17,7 +17,7 @@
#define __enable_constant_folding
#endif
-namespace cwg300 { // cwg300: yes
+namespace cwg300 { // cwg300: 2.7
template<typename R, typename A> void f(R (&)(A)) {}
int g(int);
void h() { f(g); }
@@ -337,7 +337,7 @@ namespace cwg319 { // cwg319: no
}
} // namespace cwg319
-namespace cwg320 { // cwg320: yes
+namespace cwg320 { // cwg320: 3.1
#if __cplusplus >= 201103L
struct X {
constexpr X() {}
@@ -419,7 +419,7 @@ namespace cwg327 { // cwg327: dup 538
struct B {};
} // namespace cwg327
-namespace cwg328 { // cwg328: yes
+namespace cwg328 { // cwg328: 2.7
struct A; // #cwg328-A
struct B { A a; };
// expected-error at -1 {{field has incomplete type 'A'}}
@@ -569,14 +569,14 @@ namespace cwg332 { // cwg332: dup 577
// cxx20-23-warning at -2 {{volatile-qualified parameter type 'volatile void' is deprecated}}
} // namespace cwg332
-namespace cwg333 { // cwg333: yes
+namespace cwg333 { // cwg333: 2.7
int n = 0;
int f(int(n));
int g((int(n)));
int h = f(g);
} // namespace cwg333
-namespace cwg334 { // cwg334: yes
+namespace cwg334 { // cwg334: 2.7
template<typename T> void f() {
T x;
f((x, 123));
@@ -590,7 +590,7 @@ namespace cwg334 { // cwg334: yes
// cwg335: sup 820
-namespace cwg336 { // cwg336: yes
+namespace cwg336 { // cwg336: 2.7
namespace Pre {
template<class T1> class A {
template<class T2> class B {
@@ -622,7 +622,7 @@ namespace cwg336 { // cwg336: yes
}
} // namespace cwg336
-namespace cwg337 { // cwg337: yes
+namespace cwg337 { // cwg337: 2.7
template<typename T> void f(T (*)[1]);
template<typename T> int &f(...);
@@ -673,7 +673,7 @@ namespace cwg339 { // cwg339: 2.8
A<1> c = make_A<char>();
} // namespace cwg339
-namespace cwg340 { // cwg340: yes
+namespace cwg340 { // cwg340: 2.7
struct A { A(int); };
struct B { B(A, A, int); };
int x, y;
@@ -734,7 +734,7 @@ namespace cwg344 { // cwg344: dup 1435
struct B { friend A::~A(); };
} // namespace cwg344
-namespace cwg345 { // cwg345: yes
+namespace cwg345 { // cwg345: 2.7
struct A {
struct X {};
int X; // #cwg345-int-X
@@ -754,7 +754,7 @@ namespace cwg345 { // cwg345: yes
// cwg346: na
-namespace cwg347 { // cwg347: yes
+namespace cwg347 { // cwg347: 2.7
struct base {
struct nested;
static int n;
@@ -949,7 +949,7 @@ namespace cwg352 { // cwg352: 2.8
// cwg353 needs an IRGen test.
-namespace cwg354 { // cwg354: yes c++11
+namespace cwg354 { // cwg354: 3.1 c++11
// FIXME: Should we allow this in C++98 too?
struct S {};
@@ -1007,7 +1007,7 @@ namespace cwg354 { // cwg354: yes c++11
// since-cxx17-error@#cwg354-m3 {{value of type 'int *' is not implicitly convertible to 'int S::*'}}
} // namespace cwg354
-struct cwg355_S; // cwg355: yes
+struct cwg355_S; // cwg355: 2.7
struct ::cwg355_S {};
// expected-warning at -1 {{extra qualification on member 'cwg355_S'}}
namespace cwg355 {
@@ -1016,7 +1016,7 @@ struct ::cwg355_S s;
// cwg356: na
-namespace cwg357 { // cwg357: yes
+namespace cwg357 { // cwg357: 2.7
template<typename T> struct A { // #cwg357-A
void f() const; // #cwg357-f
};
@@ -1033,7 +1033,7 @@ namespace cwg357 { // cwg357: yes
// expected-note@#cwg357-B {{defined here}}
} // namespace cwg357
-namespace cwg358 { // cwg358: yes
+namespace cwg358 { // cwg358: 2.7
extern "C" void cwg358_f();
namespace N {
int var;
@@ -1041,7 +1041,7 @@ namespace cwg358 { // cwg358: yes
}
} // namespace cwg358
-namespace cwg359 { // cwg359: yes
+namespace cwg359 { // cwg359: 3.3
// Note, the example in the DR is wrong; it doesn't contain an anonymous
// union.
struct E {
@@ -1070,7 +1070,7 @@ namespace cwg359 { // cwg359: yes
};
} // namespace cwg359
-namespace cwg360 { // cwg360: yes
+namespace cwg360 { // cwg360: 2.8
struct A {
int foo();
int bar();
@@ -1102,7 +1102,7 @@ int main() {
// cwg362: na
// cwg363: na
-namespace cwg364 { // cwg364: yes
+namespace cwg364 { // cwg364: 2.7
struct S {
static void f(int);
void f(char);
@@ -1115,11 +1115,12 @@ namespace cwg364 { // cwg364: yes
}
} // namespace cwg364
-// cwg366: yes
+namespace cwg366 { // cwg366: 2.7
#if "foo" // expected-error {{invalid token at start of a preprocessor expression}}
#endif
+} // namespace cwg366
-namespace cwg367 { // cwg367: yes
+namespace cwg367 { // cwg367: 2.7
static_assert(__enable_constant_folding(true ? throw 0 : 4), "");
// expected-error at -1 {{expression is not an integral constant expression}}
static_assert(__enable_constant_folding(true ? 4 : throw 0), "");
@@ -1288,7 +1289,7 @@ namespace cwg374 { // cwg374: 7
// cwg375: dup 345
// cwg376: na
-namespace cwg377 { // cwg377: yes
+namespace cwg377 { // cwg377: 2.7
enum E {
// expected-error at -1 {{enumeration values exceed range of largest integer}}
a = -__LONG_LONG_MAX__ - 1,
@@ -1302,7 +1303,7 @@ namespace cwg377 { // cwg377: yes
// cwg378: dup 276
// cwg379: na
-namespace cwg381 { // cwg381: yes
+namespace cwg381 { // cwg381: 2.7
struct A {
int a;
};
@@ -1322,7 +1323,7 @@ namespace cwg381 { // cwg381: yes
}
} // namespace cwg381
-namespace cwg382 { // cwg382: yes c++11
+namespace cwg382 { // cwg382: 2.7 c++11
// FIXME: Should we allow this in C++98 mode?
struct A { typedef int T; };
typename A::T t;
@@ -1333,7 +1334,7 @@ namespace cwg382 { // cwg382: yes c++11
// expected-error at -1 {{expected a qualified name after 'typename'}}
} // namespace cwg382
-namespace cwg383 { // cwg383: yes
+namespace cwg383 { // cwg383: 2.7
struct A { A &operator=(const A&); };
struct B { ~B(); };
union C { C &operator=(const C&); };
@@ -1341,7 +1342,7 @@ namespace cwg383 { // cwg383: yes
static_assert(!__is_pod(A) && !__is_pod(B) && !__is_pod(C) && !__is_pod(D), "");
} // namespace cwg383
-namespace cwg384 { // cwg384: yes
+namespace cwg384 { // cwg384: 2.7
namespace N1 {
template<typename T> struct Base {};
template<typename T> struct X {
@@ -1722,7 +1723,7 @@ namespace cwg395 { // cwg395: 3.0
int (S::*q)() = null2;
} // namespace cwg395
-namespace cwg396 { // cwg396: yes
+namespace cwg396 { // cwg396: 3.0
void f() {
auto int a();
// since-cxx11-error at -1 {{'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases}}
@@ -1737,7 +1738,7 @@ namespace cwg396 { // cwg396: yes
// cwg397: sup 1823
-namespace cwg398 { // cwg398: yes
+namespace cwg398 { // cwg398: 2.7
namespace example1 {
struct S {
static int const I = 42;
diff --git a/clang/test/CXX/drs/cwg4xx.cpp b/clang/test/CXX/drs/cwg4xx.cpp
index 4051496ca2c4f3..bcaf7db04ad3b5 100644
--- a/clang/test/CXX/drs/cwg4xx.cpp
+++ b/clang/test/CXX/drs/cwg4xx.cpp
@@ -16,7 +16,7 @@ __extension__ typedef __SIZE_TYPE__ size_t;
namespace std { struct type_info; }
-namespace cwg400 { // cwg400: yes
+namespace cwg400 { // cwg400: 2.7
struct A { int a; struct a {}; }; // #cwg400-A
struct B { int a; struct a {}; }; // #cwg400-B
struct C : A, B { using A::a; struct a b; };
@@ -89,7 +89,7 @@ namespace cwg401 { // cwg401: 2.8
// since-cxx11-note@#cwg402-f {{candidate template ignored: substitution failure [with T = B, U = typename B::type]: 'type' is a protected member of 'cwg401::B'}}
} // namespace cwg401
-namespace cwg403 { // cwg403: yes
+namespace cwg403 { // cwg403: 2.7
namespace A {
struct S {};
int f(void*);
@@ -106,8 +106,8 @@ namespace cwg403 { // cwg403: yes
// cwg404: na
// (NB: also sup 594)
-namespace cwg405 { // cwg405: yes
- // NB: also dup 218
+namespace cwg405 { // cwg405: 2.7
+ // NB: also dup 218
namespace A {
struct S {};
void f(S);
@@ -250,7 +250,7 @@ namespace cwg408 { // cwg408: 3.4
template void R<int>::f();
} // namespace cwg408
-namespace cwg409 { // cwg409: yes
+namespace cwg409 { // cwg409: 2.7
template<typename T> struct A {
typedef int B;
B b1;
@@ -290,7 +290,7 @@ namespace cwg410 { // cwg410: no
// cwg412 is in cwg412.cpp
-namespace cwg413 { // cwg413: yes
+namespace cwg413 { // cwg413: 2.7
struct S {
int a;
int : 17;
@@ -320,13 +320,13 @@ namespace cwg414 { // cwg414: dup 305
}
} // namespace cwg414
-namespace cwg415 { // cwg415: yes
+namespace cwg415 { // cwg415: 2.7
template<typename T> void f(T, ...) { T::error; }
void f(int, int);
void g() { f(0, 0); } // ok
} // namespace cwg415
-namespace cwg416 { // cwg416: yes
+namespace cwg416 { // cwg416: 2.7
extern struct A a;
int &operator+(const A&, const A&);
int &k = a + a;
@@ -466,7 +466,7 @@ namespace cwg420 { // cwg420: 9
#endif
} // namespace cwg420
-namespace cwg421 { // cwg421: yes
+namespace cwg421 { // cwg421: 2.7
struct X { X(); int n; int &r; };
int *p = &X().n;
// cxx98-error at -1 {{taking the address of a temporary object of type 'int'}}
@@ -474,7 +474,7 @@ namespace cwg421 { // cwg421: yes
int *q = &X().r;
} // namespace cwg421
-namespace cwg422 { // cwg422: yes
+namespace cwg422 { // cwg422: 2.7
template<typename T, typename U> void f() {
typedef T type; // #cwg422-typedef-T
typedef U type;
@@ -486,12 +486,12 @@ namespace cwg422 { // cwg422: yes
template void f<int, char>(); // #cwg422-f-int-char
} // namespace cwg422
-namespace cwg423 { // cwg423: yes
+namespace cwg423 { // cwg423: 2.7
template<typename T> struct X { operator T&(); };
void f(X<int> x) { x += 1; }
} // namespace cwg423
-namespace cwg424 { // cwg424: yes
+namespace cwg424 { // cwg424: 2.7
struct A {
typedef int N; // #cwg424-N
typedef int N;
@@ -521,11 +521,11 @@ namespace cwg424 { // cwg424: yes
};
} // namespace cwg424
-namespace cwg425 { // cwg425: yes
+namespace cwg425 { // cwg425: 2.7
struct A { template<typename T> operator T() const; } a;
float f = 1.0f * a;
// expected-error at -1 {{use of overloaded operator '*' is ambiguous (with operand types 'float' and 'struct A')}}
- // expected-note at -2 +{{built-in candidate}}
+ // expected-note at -2 +{{built-in candidate operator*}}
template<typename T> struct is_float;
template<> struct is_float<float> { typedef void type; };
@@ -537,7 +537,7 @@ namespace cwg425 { // cwg425: yes
float g = 1.0f * b; // ok
} // namespace cwg425
-namespace cwg427 { // cwg427: yes
+namespace cwg427 { // cwg427: 2.7
struct B {};
struct D : public B {
D(B &) = delete; // #cwg427-D
@@ -553,28 +553,28 @@ namespace cwg427 { // cwg427: yes
// expected-note@#cwg427-D {{'D' has been explicitly marked deleted here}}
} // namespace cwg427
-namespace cwg428 { // cwg428: yes
+namespace cwg428 { // cwg428: 2.7
template<typename T> T make();
extern struct X x; // #cwg428-X
void f() {
throw void();
- // expected-error at -1 {{cannot throw}}
+ // expected-error at -1 {{cannot throw object of incomplete type 'void'}}
throw make<void*>();
throw make<const volatile void*>();
throw x;
- // expected-error at -1 {{cannot throw}}
+ // expected-error at -1 {{cannot throw object of incomplete type 'struct X'}}
// expected-note@#cwg428-X {{forward declaration of 'cwg428::X'}}
throw make<X&>();
- // expected-error at -1 {{cannot throw}}
+ // expected-error at -1 {{cannot throw object of incomplete type 'cwg428::X'}}
// expected-note@#cwg428-X {{forward declaration of 'cwg428::X'}}
throw make<X*>();
- // expected-error at -1 {{cannot throw}}
+ // expected-error at -1 {{cannot throw pointer to object of incomplete type 'cwg428::X'}}
// expected-note@#cwg428-X {{forward declaration of 'cwg428::X'}}
throw make<const volatile X&>();
- // expected-error at -1 {{cannot throw}}
+ // expected-error at -1 {{cannot throw object of incomplete type 'cwg428::X'}}
// expected-note@#cwg428-X {{forward declaration of 'cwg428::X'}}
throw make<const volatile X*>();
- // expected-error at -1 {{cannot throw}}
+ // expected-error at -1 {{cannot throw pointer to object of incomplete type 'const volatile cwg428::X'}}
// expected-note@#cwg428-X {{forward declaration of 'cwg428::X'}}
}
} // namespace cwg428
@@ -594,7 +594,7 @@ namespace cwg429 { // cwg429: 2.8 c++11
} *b = new (0) B; // ok, second delete is not a non-placement deallocation function
} // namespace cwg429
-namespace cwg430 { // cwg430: yes c++11
+namespace cwg430 { // cwg430: 2.7 c++11
// resolved by n2239
// FIXME: This should apply in C++98 too.
void f(int n) {
@@ -603,7 +603,7 @@ namespace cwg430 { // cwg430: yes c++11
}
} // namespace cwg430
-namespace cwg431 { // cwg431: yes
+namespace cwg431 { // cwg431: 2.8
struct A {
template<typename T> T *get();
template<typename T> struct B {
@@ -648,7 +648,7 @@ namespace cwg432 { // cwg432: 3.0
#endif
} // namespace cwg432
-namespace cwg433 { // cwg433: yes
+namespace cwg433 { // cwg433: 2.7
template<class T> struct S {
void f(union U*);
};
@@ -678,7 +678,7 @@ namespace cwg434 { // cwg434: sup 2352
// cwg435: na
-namespace cwg436 { // cwg436: yes
+namespace cwg436 { // cwg436: 2.7
enum E { f }; // #cwg436-f
void f();
// expected-error at -1 {{redefinition of 'f' as
diff erent kind of symbol}}
@@ -710,7 +710,7 @@ namespace cwg437 { // cwg437: sup 1308
// cwg442: sup 348
// cwg443: na
-namespace cwg444 { // cwg444: yes
+namespace cwg444 { // cwg444: 2.7
struct D;
struct B { // #cwg444-B
D &operator=(D &) = delete; // #cwg444-deleted
@@ -773,7 +773,7 @@ namespace cwg446 { // cwg446: 2.8
}
} // namespace cwg446
-namespace cwg447 { // cwg447: yes
+namespace cwg447 { // cwg447: 2.8
struct A { int n; int a[4]; };
template<int> struct U {
typedef int type;
@@ -821,7 +821,7 @@ namespace cwg448 { // cwg448: 2.8
// cwg449: na
-namespace cwg450 { // cwg450: yes
+namespace cwg450 { // cwg450: 3.2
typedef int A[3];
void f1(const A &);
void f2(A &); // #cwg450-f2
@@ -842,7 +842,7 @@ namespace cwg450 { // cwg450: yes
#endif
} // namespace cwg450
-namespace cwg451 { // cwg451: yes
+namespace cwg451 { // cwg451: 2.7
const int a = 1 / 0;
// expected-warning at -1 {{division by zero is undefined}}
const int b = 1 / 0; // #cwg451-b
@@ -853,7 +853,7 @@ namespace cwg451 { // cwg451: yes
// expected-note@#cwg451-b {{declared here}}
} // namespace cwg451
-namespace cwg452 { // cwg452: yes
+namespace cwg452 { // cwg452: 2.7
struct A {
int a, b, c;
A *p;
@@ -864,7 +864,7 @@ namespace cwg452 { // cwg452: yes
// cwg454 FIXME write a codegen test
-namespace cwg456 { // cwg456: yes
+namespace cwg456 { // cwg456: 3.4
// sup 903 c++11
const int null = 0;
void *p = null;
@@ -877,7 +877,7 @@ namespace cwg456 { // cwg456: yes
// since-cxx11-error at -2 {{cannot initialize a variable of type 'void *' with an lvalue of type 'const bool'}}
} // namespace cwg456
-namespace cwg457 { // cwg457: yes
+namespace cwg457 { // cwg457: 2.7
const int a = 1;
const volatile int b = 1;
static_assert(a, "");
@@ -934,7 +934,7 @@ namespace cwg458 { // cwg458: 11
}
} // namespace cwg458
-namespace cwg460 { // cwg460: yes
+namespace cwg460 { // cwg460: 2.7
namespace X { namespace Q { int n; } }
namespace Y {
using X;
@@ -985,7 +985,7 @@ void g(int a, CI b, VI c) {
}
} // namespace cwg466
-namespace cwg467 { // cwg467: yes
+namespace cwg467 { // cwg467: 2.7
int stuff();
int f() {
@@ -1007,7 +1007,7 @@ namespace cwg467 { // cwg467: yes
}
} // namespace cwg467
-namespace cwg468 { // cwg468: yes c++11
+namespace cwg468 { // cwg468: 2.7 c++11
// FIXME: Should we allow this in C++98 too?
template<typename> struct A {
template<typename> struct B {
@@ -1027,7 +1027,7 @@ namespace cwg469 { // cwg469: no
// expected-note@#cwg469-X {{template is declared here}}
} // namespace cwg469
-namespace cwg470 { // cwg470: yes
+namespace cwg470 { // cwg470: 2.7
template<typename T> struct A {
struct B {};
};
@@ -1115,7 +1115,7 @@ namespace cwg477 { // cwg477: 3.5
// expected-error at -1 {{can only be specified inside the class definition}}
} // namespace cwg477
-namespace cwg478 { // cwg478: yes
+namespace cwg478 { // cwg478: 2.7
struct A { virtual void f() = 0; }; // #cwg478-f
void f(A *a);
void f(A a[10]);
@@ -1164,7 +1164,7 @@ namespace cwg479 { // cwg479: 2.8
}
} // namespace cwg479
-namespace cwg480 { // cwg480: yes
+namespace cwg480 { // cwg480: 2.7
struct A { int n; };
struct B : A {};
struct C : virtual B {};
@@ -1279,7 +1279,7 @@ namespace cwg482 { // cwg482: 3.5
};
} // namespace cwg482
-namespace cwg483 { // cwg483: yes
+namespace cwg483 { // cwg483: 2.7
namespace climits {
static_assert(__SCHAR_MAX__ >= 127, "");
static_assert(__SHRT_MAX__ >= 32767, "");
@@ -1296,7 +1296,7 @@ namespace cwg483 { // cwg483: yes
}
} // namespace cwg483
-namespace cwg484 { // cwg484: yes
+namespace cwg484 { // cwg484: 2.8
struct A {
A();
void f();
@@ -1334,7 +1334,7 @@ namespace cwg484 { // cwg484: yes
} S;
} // namespace cwg484
-namespace cwg485 { // cwg485: yes
+namespace cwg485 { // cwg485: 2.7
namespace N {
struct S {};
int operator+(S, S);
@@ -1347,7 +1347,7 @@ namespace cwg485 { // cwg485: yes
int b = f<int>(s);
} // namespace cwg485
-namespace cwg486 { // cwg486: yes
+namespace cwg486 { // cwg486: 2.7
template<typename T> T f(T *); // #cwg486-f
int &f(...);
@@ -1366,7 +1366,7 @@ namespace cwg486 { // cwg486: yes
}
} // namespace cwg486
-namespace cwg487 { // cwg487: yes
+namespace cwg487 { // cwg487: 2.7
enum E { e };
int operator+(int, E); // #cwg487-operator-plus
static_assert(4 + e, "");
@@ -1375,7 +1375,7 @@ namespace cwg487 { // cwg487: yes
// since-cxx11-note@#cwg487-operator-plus {{declared here}}
} // namespace cwg487
-namespace cwg488 { // cwg488: yes c++11
+namespace cwg488 { // cwg488: 2.9 c++11
template <typename T> void f(T);
void f(int);
void g() {
@@ -1519,7 +1519,7 @@ namespace cwg497 { // cwg497: sup 253
}
} // namespace cwg497
-namespace cwg499 { // cwg499: yes
+namespace cwg499 { // cwg499: 2.7
extern char str[];
void f() { throw str; }
} // namespace cwg499
diff --git a/clang/test/CXX/drs/cwg5xx.cpp b/clang/test/CXX/drs/cwg5xx.cpp
index 3df69b5450949c..1fdfe5785c5c44 100644
--- a/clang/test/CXX/drs/cwg5xx.cpp
+++ b/clang/test/CXX/drs/cwg5xx.cpp
@@ -40,7 +40,7 @@ namespace cwg500 { // cwg500: dup 372
class D : public A::B {};
} // namespace cwg500
-namespace cwg501 { // cwg501: yes
+namespace cwg501 { // cwg501: 2.7
struct A {
friend void f() {}
void g() {
@@ -50,7 +50,7 @@ namespace cwg501 { // cwg501: yes
};
} // namespace cwg501
-namespace cwg502 { // cwg502: yes
+namespace cwg502 { // cwg502: 2.7
struct Q {};
template<typename T> struct A {
enum E { e = 1 };
@@ -65,7 +65,7 @@ namespace cwg502 { // cwg502: yes
template struct A<int>;
} // namespace cwg502
-namespace cwg505 { // cwg505: yes
+namespace cwg505 { // cwg505: 2.7
const char *exts = "\e\(\{\[\%";
// expected-error at -1 {{use of non-standard escape character '\e'}}
// expected-error at -2 {{use of non-standard escape character '\('}}
@@ -76,7 +76,7 @@ namespace cwg505 { // cwg505: yes
// expected-error at -1 {{unknown escape sequence '\Q'}}
} // namespace cwg505
-namespace cwg506 { // cwg506: yes
+namespace cwg506 { // cwg506: 2.7
struct NonPod { ~NonPod(); };
void f(...);
void g(NonPod np) { f(np); }
@@ -91,7 +91,7 @@ namespace cwg506 { // cwg506: yes
// cwg509: na
// cwg510: na
-namespace cwg512 { // cwg512: yes
+namespace cwg512 { // cwg512: 3.0
struct A { // #cwg512-A
A(int); // #cwg512-A-ctor
};
@@ -103,7 +103,7 @@ namespace cwg512 { // cwg512: yes
// cwg513: na
-namespace cwg514 { // cwg514: yes
+namespace cwg514 { // cwg514: 2.7
namespace A { extern int x, y; }
int A::x = y;
} // namespace cwg514
@@ -146,7 +146,7 @@ namespace cwg517 { // cwg517: no
template<typename T> int v<T&> = 0;
} // namespace cwg517
-namespace cwg518 { // cwg518: yes c++11
+namespace cwg518 { // cwg518: 2.7 c++11
enum E { e, };
// cxx98-error at -1 {{commas at the end of enumerator lists are a C++11 extension}}
} // namespace cwg518
@@ -158,7 +158,7 @@ namespace cwg518 { // cwg518: yes c++11
// FIXME: The wording here is broken. It's not reasonable to expect a
// diagnostic here. Once the relevant DR gets a number, mark this as a dup.
-namespace cwg522 { // cwg522: yes
+namespace cwg522 { // cwg522: 2.7
struct S {};
template<typename T> void b1(volatile T &);
template<typename T> void b2(volatile T * const *);
@@ -190,7 +190,7 @@ namespace cwg522 { // cwg522: yes
}
} // namespace cwg522
-namespace cwg524 { // cwg524: yes
+namespace cwg524 { // cwg524: 2.7
template<typename T> void f(T a, T b) { operator+(a, b); }
// expected-error at -1 {{call to function 'operator+' that is neither visible in the template definition nor found by argument-dependent lookup}}
// expected-note@#cwg524-f-N-S {{in instantiation of function template specialization 'cwg524::f<cwg524::N::S>' requested here}}
@@ -205,7 +205,7 @@ namespace cwg524 { // cwg524: yes
template void f(N::S, N::S); // #cwg524-f-N-S
} // namespace cwg524
-namespace cwg525 { // cwg525: yes
+namespace cwg525 { // cwg525: 2.7
namespace before {
// Note, the example was correct prior to the change; instantiation is
// required for cases like this:
@@ -224,7 +224,7 @@ namespace cwg525 { // cwg525: yes
}
} // namespace cwg525
-namespace cwg526 { // cwg526: yes
+namespace cwg526 { // cwg526: 2.7
template<int> struct S {};
template<int N> void f1(S<N> s);
template<int N> void f2(S<(N)> s); // #cwg526-f2
@@ -287,7 +287,7 @@ void f() {
} // namespace cwg528
-namespace cwg530 { // cwg530: yes
+namespace cwg530 { // cwg530: 2.7
template<int*> struct S { enum { N = 1 }; };
template<void(*)()> struct T { enum { N = 1 }; };
int n;
@@ -439,7 +439,7 @@ namespace cwg534 { // cwg534: 2.9
// expected-error at -1 {{function template partial specialization is not allowed}}
} // namespace cwg534
-namespace cwg535 { // cwg535: yes
+namespace cwg535 { // cwg535: 3.1
class X { private: X(const X&); };
struct A {
X x;
@@ -474,8 +474,8 @@ namespace cwg535 { // cwg535: yes
// cwg537: na
// cwg538: na
-// cwg539: yes
-const cwg539(
+namespace cwg539 { // cwg539: 3.4
+const f(
// expected-error at -1 {{a type specifier is required for all declarations}}
const a) {
// expected-error at -1 {{unknown type name 'a'}}
@@ -509,11 +509,11 @@ const cwg539(
int arr[3];
// FIXME: The extra braces here are to avoid the parser getting too
// badly confused when recovering here. We should fix this recovery.
- { for (const n
+ { for (const n // #cwg539-for
// since-cxx11-error at -1 {{unknown type name 'n'}}
- // since-cxx11-note at -2 {{}}
: arr) ; {} }
// since-cxx11-error at -1 +{{}}
+ // since-cxx11-note@#cwg539-for {{}}
(void) [](const) {};
// since-cxx11-error at -1 {{a type specifier is required for all declarations}}
(void) [](const n) {};
@@ -526,8 +526,9 @@ const cwg539(
// since-cxx11-error at -1 {{expected a type}}
#endif
}
+} // namespace cwg539
-namespace cwg540 { // cwg540: yes
+namespace cwg540 { // cwg540: 2.7
typedef int &a;
typedef const a &a;
// expected-warning at -1 {{'const' qualifier on reference type 'a' (aka 'int &') has no effect}}
@@ -541,7 +542,7 @@ namespace cwg540 { // cwg540: yes
// expected-warning@#cwg540-typedef-b-c {{'const' qualifier on reference type 'b' (aka 'const int &') has no effect}}
} // namespace cwg540
-namespace cwg541 { // cwg541: yes
+namespace cwg541 { // cwg541: 2.7
template<int> struct X { typedef int type; };
template<typename T> struct S {
int f(T);
@@ -571,7 +572,7 @@ namespace cwg541 { // cwg541: yes
};
} // namespace cwg541
-namespace cwg542 { // cwg542: yes
+namespace cwg542 { // cwg542: 3.5
#if __cplusplus >= 201103L
// In C++20 A and B are no longer aggregates and thus the constructor is
// called, which fails.
@@ -609,7 +610,7 @@ namespace cwg543 { // cwg543: 3.0
// since-cxx11-note@#cwg543-A-n {{default constructor of 'A' is implicitly deleted because field 'n' of const-qualified type 'const int' would not be initialized}}
} // namespace cwg543
-namespace cwg544 { // cwg544: yes
+namespace cwg544 { // cwg544: 2.7
int *n;
template<class T> struct A { int n; };
@@ -618,7 +619,7 @@ namespace cwg544 { // cwg544: yes
int k = B<int>().get();
} // namespace cwg544
-namespace cwg546 { // cwg546: yes
+namespace cwg546 { // cwg546: 2.7
template<typename T> struct A { void f(); };
template struct A<int>;
template<typename T> void A<T>::f() { T::error; }
@@ -642,7 +643,7 @@ namespace cwg548 { // cwg548: dup 482
// cwg550: dup 393
-namespace cwg551 { // cwg551: yes c++11
+namespace cwg551 { // cwg551: 2.7 c++11
// FIXME: This obviously should apply in C++98 mode too.
template<typename T> void f() {}
template inline void f<int>();
@@ -659,7 +660,7 @@ namespace cwg551 { // cwg551: yes c++11
// since-cxx11-error at -1 {{explicit instantiation cannot be 'inline'}}
} // namespace cwg551
-namespace cwg552 { // cwg552: yes
+namespace cwg552 { // cwg552: 2.7
template<typename T, typename T::U> struct X {};
struct Y { typedef int U; };
X<Y, 0> x;
@@ -768,7 +769,9 @@ namespace cwg558 { // cwg558: 2.9
wchar_t h = L'\xE000';
} // namespace cwg558
-template<typename> struct cwg559 { typedef int T; cwg559::T u; }; // cwg559: yes
+namespace cwg559 { // cwg559: 2.7
+template<typename> struct S { typedef int T; S::T u; };
+} // namespace cwg559
namespace cwg560 { // cwg560: 16
@@ -784,7 +787,7 @@ Outer<T>::Inner* Outer<T>::Inner::self() { return this; }
} // namespace cwg560
-namespace cwg561 { // cwg561: yes
+namespace cwg561 { // cwg561: 2.7
template<typename T> void f(int);
template<typename T> void g(T t) {
f<T>(t);
@@ -801,14 +804,14 @@ namespace cwg561 { // cwg561: yes
// cwg562: na
// cwg563 is in cwg563.cpp
-namespace cwg564 { // cwg564: yes
+namespace cwg564 { // cwg564: 2.7
extern "C++" void f(int);
void f(int); // ok
extern "C++" { extern int n; }
int n; // ok
} // namespace cwg564
-namespace cwg565 { // cwg565: yes
+namespace cwg565 { // cwg565: 2.7
namespace N {
template<typename T> int f(T); // #cwg565-f
}
@@ -824,7 +827,7 @@ namespace cwg565 { // cwg565: yes
// expected-note@#cwg565-using {{using declaration}}
} // namespace cwg565
-namespace cwg566 { // cwg566: yes
+namespace cwg566 { // cwg566: 3.1
#if __cplusplus >= 201103L
static_assert(int(-3.99) == -3, "");
#endif
@@ -873,7 +876,7 @@ namespace cwg568 { // cwg568: 3.0 c++11
}
} // namespace cwg568
-namespace cwg569 { // cwg569: yes c++11
+namespace cwg569 { // cwg569: 2.7 c++11
// FIXME: This is a DR issue against C++98, so should probably apply there
// too.
;;;;;
@@ -890,7 +893,7 @@ namespace cwg570 { // cwg570: dup 633
// cwg571 is in cwg571.cpp
-namespace cwg572 { // cwg572: yes
+namespace cwg572 { // cwg572: 2.7
enum E { a = 1, b = 2 };
static_assert(a + b == 3, "");
} // namespace cwg572
@@ -967,7 +970,7 @@ namespace cwg574 { // cwg574: 3.0
};
} // namespace cwg574
-namespace cwg575 { // cwg575: yes
+namespace cwg575 { // cwg575: 2.7
template<typename T, typename U = typename T::type> void a(T); void a(...);
// cxx98-error at -1 {{default template arguments for a function template are a C++11 extension}}
template<typename T, typename T::type U = 0> void b(T); void b(...);
@@ -1140,7 +1143,7 @@ namespace cwg587 { // cwg587: 3.2
template void f(bool, const S, S);
} // namespace cwg587
-namespace cwg588 { // cwg588: yes
+namespace cwg588 { // cwg588: 2.7
struct A { int n; }; // #cwg588-A
template<typename T> int f() {
struct S : A, T { int f() { return n; } } s;
@@ -1155,7 +1158,7 @@ namespace cwg588 { // cwg588: yes
int k = f<B>(); // #cwg588-k
} // namespace cwg588
-namespace cwg589 { // cwg589: yes
+namespace cwg589 { // cwg589: 2.7
struct B { };
struct D : B { };
D f();
@@ -1167,7 +1170,7 @@ namespace cwg589 { // cwg589: yes
// expected-error at -1 {{taking the address of a temporary object of type 'const B'}}
} // namespace cwg589
-namespace cwg590 { // cwg590: yes
+namespace cwg590 { // cwg590: 2.7
template<typename T> struct A {
struct B {
struct C {
@@ -1264,7 +1267,7 @@ namespace cwg595 { // cwg595: dup 1330
// cwg597: na
-namespace cwg598 { // cwg598: yes
+namespace cwg598 { // cwg598: 2.7
namespace N {
void f(int);
void f(char);
diff --git a/clang/test/CXX/drs/cwg6xx.cpp b/clang/test/CXX/drs/cwg6xx.cpp
index 3bd209799e4195..fb6acde459d9c4 100644
--- a/clang/test/CXX/drs/cwg6xx.cpp
+++ b/clang/test/CXX/drs/cwg6xx.cpp
@@ -33,7 +33,7 @@ namespace std {
__extension__ typedef __SIZE_TYPE__ size_t;
} // namespace std
-namespace cwg601 { // cwg601: yes
+namespace cwg601 { // cwg601: 2.7
#if __cplusplus >= 201103L
#define MAX __LLONG_MAX__
#else
@@ -63,7 +63,7 @@ static_assert(0x8000000000000000 < -1, "0x8000000000000000 should be unsigned");
#undef MAX
} // namespace cwg601
-namespace cwg602 { // cwg602: yes
+namespace cwg602 { // cwg602: 2.7
template<class T> struct A {
template<class U> friend struct A;
};
@@ -78,11 +78,11 @@ namespace cwg602 { // cwg602: yes
B<int> b;
} // namespace cwg602
-namespace cwg603 { // cwg603: yes
+namespace cwg603 { // cwg603: 3.1
template<unsigned char> struct S {};
typedef S<'\001'> S1;
typedef S<(1ul << __CHAR_BIT__) + 1> S1;
- // since-cxx11-error at -1 {{cannot be narrowed}}
+ // since-cxx11-error at -1 {{non-type template argument evaluates to 257, which cannot be narrowed to type 'unsigned char'}}
} // namespace cwg603
// cwg604: na
@@ -110,7 +110,7 @@ namespace cwg606 { // cwg606: 3.0
#endif
} // namespace cwg606
-namespace cwg607 { // cwg607: yes
+namespace cwg607 { // cwg607: 2.7
namespace example1 {
struct Y {};
@@ -138,23 +138,25 @@ N::D::D() : typedef_B(0) {}
} // namespace example2
} // namespace cwg607
-namespace cwg608 { // cwg608: yes
+namespace cwg608 { // cwg608: 2.7
struct A { virtual void f(); };
struct B : A {};
struct C : A { void f(); };
struct D : B, C {};
} // namespace cwg608
-static_assert(-0u == 0u, ""); // cwg610: yes
+namespace cwg610 { // cwg610: 2.7
+static_assert(-0u == 0u, "");
+} // namespace cwg610
-namespace cwg611 { // cwg611: yes
+namespace cwg611 { // cwg611: 2.7
int k;
struct S { int &r; } s = { k ? k : k };
} // namespace cwg611
// cwg612: na
-namespace cwg613 { // cwg613: yes c++11
+namespace cwg613 { // cwg613: 3.1 c++11
// see also n2253
struct A { int n; static void f(); };
int f(int);
@@ -191,10 +193,12 @@ namespace cwg613 { // cwg613: yes c++11
}
} // namespace cwg613
-static_assert((-1) / 2 == 0, ""); // cwg614: yes
+namespace cwg614 { // cwg614: 2.7
+static_assert((-1) / 2 == 0, "");
static_assert((-1) % 2 == -1, "");
+} // namespace cwg614
-namespace cwg615 { // cwg615: yes
+namespace cwg615 { // cwg615: 2.7
int f();
static int n = f();
} // namespace cwg615
@@ -217,13 +221,13 @@ namespace cwg616 { // cwg616: 4
#endif
} // namespace cwg616
-namespace cwg618 { // cwg618: yes
+namespace cwg618 { // cwg618: 2.7
#if (unsigned)-1 > 0
#error wrong
#endif
} // namespace cwg618
-namespace cwg619 { // cwg619: yes
+namespace cwg619 { // cwg619: 3.4
extern int x[10];
struct S { static int x[10]; };
@@ -244,7 +248,7 @@ namespace cwg619 { // cwg619: yes
// cwg620: dup 568
-namespace cwg621 { // cwg621: yes
+namespace cwg621 { // cwg621: 2.7
template<typename T> T f();
template<> int f() {} // #cwg621-f
template<> int f<int>() {}
@@ -257,7 +261,7 @@ namespace cwg621 { // cwg621: yes
// cwg624 needs a libc++abi test.
-namespace cwg625 { // cwg625: yes
+namespace cwg625 { // cwg625: 2.9
template<typename T> struct A {};
A<auto> x = A<int>();
// cxx98-error at -1 {{'auto' type specifier is a C++11 extension}}
@@ -268,14 +272,14 @@ namespace cwg625 { // cwg625: yes
// expected-error at -2 {{'auto' not allowed in function prototype}}
} // namespace cwg625
-namespace cwg626 { // cwg626: yes
+namespace cwg626 { // cwg626: 2.7
#define STR(x) #x
char c[2] = STR(c); // ok, type matches
wchar_t w[2] = STR(w);
// expected-error at -1 {{initializing wide char array with non-wide string literal}}
} // namespace cwg626
-namespace cwg627 { // cwg627: yes
+namespace cwg627 { // cwg627: 2.7
void f() {
// FIXME: emitted diagnostic have a room for improvement
true a = 0;
@@ -300,7 +304,7 @@ namespace cwg629 { // cwg629: 2.9
}
} // namespace cwg629
-namespace cwg630 { // cwg630: yes
+namespace cwg630 { // cwg630: 2.7
const bool MB_EQ_WC =
' ' == L' ' && '\t' == L'\t' && '\v' == L'\v' && '\r' == L'\r' &&
'\n' == L'\n' && //
@@ -336,7 +340,7 @@ static_assert(MB_EQ_WC, "!__STDC_MB_MIGHT_NEQ_WC__ but some character
diff ers");
// cwg631: na
-namespace cwg632 { // cwg632: yes
+namespace cwg632 { // cwg632: 2.7
struct S { int n; } s = {{5}};
// expected-warning at -1 {{braces around scalar initializer}}
} // namespace cwg632
@@ -344,7 +348,7 @@ namespace cwg632 { // cwg632: yes
// cwg633: na
// see also n2993
-namespace cwg634 { // cwg634: yes
+namespace cwg634 { // cwg634: 2.7
struct S { S(); S(const S&); virtual void f(); ~S(); };
int f(...);
char f(int);
@@ -356,7 +360,7 @@ namespace cwg634 { // cwg634: yes
// since-cxx11-error at -2 {{cannot pass object of non-trivial type 'S' through variadic function; call will abort at runtime}}
} // namespace cwg634
-namespace cwg635 { // cwg635: yes
+namespace cwg635 { // cwg635: 2.7
template<typename T> struct A { A(); ~A(); };
template<typename T> A<T>::A<T>() {}
// expected-error at -1 {{out-of-line constructor for 'A' cannot have template arguments}}
@@ -383,7 +387,7 @@ namespace cwg635 { // cwg635: yes
// expected-note@#cwg635-D {{previous definition is here}}
} // namespace cwg635
-namespace cwg637 { // cwg637: yes
+namespace cwg637 { // cwg637: 3.0
void f(int i) {
i = ++i + 1;
i = i++ + 1;
@@ -433,7 +437,7 @@ namespace cwg639 { // cwg639: 3.3
}
} // namespace cwg639
-namespace cwg641 { // cwg641: yes
+namespace cwg641 { // cwg641: 2.7
namespace std_example {
struct abc;
@@ -483,7 +487,7 @@ namespace cwg641 { // cwg641: yes
}
} // namespace cwg641
-namespace cwg642 { // cwg642: yes
+namespace cwg642 { // cwg642: 2.7
void f() {
const int i = 2;
{
@@ -623,7 +627,7 @@ namespace cwg647 { // cwg647: 3.1
#endif
} // namespace cwg647
-namespace cwg648 { // cwg648: yes
+namespace cwg648 { // cwg648: 2.7
#if __cplusplus >= 201103L
int f();
constexpr int a = (true ? 1 : f());
@@ -651,7 +655,7 @@ struct Y {
// cwg650 is in cwg650.cpp
-namespace cwg651 { // cwg651: yes
+namespace cwg651 { // cwg651: 2.7
#if __cplusplus >= 201103L
struct X {
virtual X &f();
@@ -664,7 +668,7 @@ namespace cwg651 { // cwg651: yes
#endif
} // namespace cwg651
-namespace cwg652 { // cwg652: yes
+namespace cwg652 { // cwg652: 3.1
#if __cplusplus >= 201103L
constexpr int n = 1.2 * 3.4;
static_assert(n == 4, "");
@@ -700,7 +704,7 @@ namespace cwg654 { // cwg654: sup 1423
#endif
} // namespace cwg654
-namespace cwg655 { // cwg655: yes
+namespace cwg655 { // cwg655: 3.0
struct A { A(int); }; // #cwg655-A
struct B : A {
A a; // #cwg655-a
@@ -718,7 +722,7 @@ namespace cwg655 { // cwg655: yes
};
} // namespace cwg655
-namespace cwg656 { // cwg656: yes
+namespace cwg656 { // cwg656: 2.8
struct A { A(const A&) = delete; };
// cxx98-error at -1 {{deleted function definitions are a C++11 extension}}
struct B : A {};
@@ -830,7 +834,7 @@ namespace cwg660 { // cwg660: 3.0
// cwg661 is in cwg661.cpp
-namespace cwg662 { // cwg662: yes
+namespace cwg662 { // cwg662: 2.7
template <typename T> void f(T t) {
T &tr = t;
T *tp = &t;
@@ -847,7 +851,7 @@ namespace cwg663 { // cwg663: sup P1949
int ЍЎ = 123;
} // namespace cwg663
-namespace cwg664 { // cwg664: yes
+namespace cwg664 { // cwg664: 2.7
#if __cplusplus >= 201103L
struct A { A(const A&) = delete; };
A &&f(A &&a, int n) {
@@ -932,7 +936,7 @@ namespace cwg667 { // cwg667: 8
// cwg668 needs an libc++abi test
-namespace cwg669 { // cwg669: yes
+namespace cwg669 { // cwg669: 3.1
#if __cplusplus >= 201103L
void f() {
int n;
@@ -972,7 +976,7 @@ namespace cwg671 { // cwg671: 2.9
// cwg672 is in cwg672.cpp
-namespace cwg673 { // cwg673: yes
+namespace cwg673 { // cwg673: 2.7
template<typename> struct X { static const int n = 0; };
class A {
@@ -1096,7 +1100,7 @@ namespace cwg677 { // cwg677: no
// cwg678 FIXME: check that the modules ODR check catches this
-namespace cwg679 { // cwg679: yes
+namespace cwg679 { // cwg679: 2.7
struct X {};
template<int> void operator+(X, X);
template<> void operator+<0>(X, X) {} // #cwg679-def
@@ -1130,7 +1134,7 @@ namespace cwg681 { // cwg681: partial
#endif
} // namespace cwg681
-namespace cwg683 { // cwg683: yes
+namespace cwg683 { // cwg683: 3.3
#if __cplusplus >= 201103L
struct A {
A() = default;
@@ -1160,7 +1164,7 @@ namespace cwg684 { // cwg684: sup 1454
#endif
} // namespace cwg684
-namespace cwg685 { // cwg685: yes
+namespace cwg685 { // cwg685: 10
enum E : long { e };
// cxx98-error at -1 {{enumeration types with a fixed underlying type are a C++11 extension}}
void f(int);
diff --git a/clang/test/CXX/drs/cwg7xx.cpp b/clang/test/CXX/drs/cwg7xx.cpp
index 0169657312e575..a8ab2e22071679 100644
--- a/clang/test/CXX/drs/cwg7xx.cpp
+++ b/clang/test/CXX/drs/cwg7xx.cpp
@@ -11,7 +11,7 @@
// cxx98-error at -1 {{variadic macros are a C99 feature}}
#endif
-namespace cwg705 { // cwg705: yes
+namespace cwg705 { // cwg705: 2.7
namespace N {
struct S {};
void f(S); // #cwg705-f
diff --git a/clang/test/CXX/drs/cwg9xx.cpp b/clang/test/CXX/drs/cwg9xx.cpp
index c07c276c021d15..96e46742650d6f 100644
--- a/clang/test/CXX/drs/cwg9xx.cpp
+++ b/clang/test/CXX/drs/cwg9xx.cpp
@@ -144,7 +144,7 @@ class B : A {
} // namespace cwg960
-namespace cwg974 { // cwg974: yes
+namespace cwg974 { // cwg974: 3.3
#if __cplusplus >= 201103L
void test() {
auto lam = [](int x = 42) { return x; };
@@ -152,7 +152,7 @@ namespace cwg974 { // cwg974: yes
#endif
} // namespace cwg974
-namespace cwg977 { // cwg977: yes
+namespace cwg977 { // cwg977: 2.7
enum E { e = E() }; // #cwg977-E
#if !defined(_WIN32) || defined(__MINGW32__)
// expected-error@#cwg977-E {{invalid use of incomplete type 'E'}}
diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html
index 6ed5e3d37bae79..a7f41d6a686869 100755
--- a/clang/www/cxx_dr_status.html
+++ b/clang/www/cxx_dr_status.html
@@ -63,7 +63,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/3.html">3</a></td>
<td>NAD</td>
<td>The template compilation model rules render some explicit specialization declarations not visible during instantiation</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="4">
<td><a href="https://cplusplus.github.io/CWG/issues/4.html">4</a></td>
@@ -111,7 +111,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/11.html">11</a></td>
<td>CD1</td>
<td>How do the keywords typename/template interact with using-declarations?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="12">
<td><a href="https://cplusplus.github.io/CWG/issues/12.html">12</a></td>
@@ -135,7 +135,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/15.html">15</a></td>
<td>dup</td>
<td>Default arguments for parameters of function templates</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="16">
<td><a href="https://cplusplus.github.io/CWG/issues/16.html">16</a></td>
@@ -147,7 +147,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/17.html">17</a></td>
<td>NAD</td>
<td>Footnote 99 should discuss the naming class when describing members that can be accessed from friends</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="18">
<td><a href="https://cplusplus.github.io/CWG/issues/18.html">18</a></td>
@@ -183,7 +183,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/23.html">23</a></td>
<td>NAD</td>
<td>Some questions regarding partial ordering of function templates</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="24">
<td><a href="https://cplusplus.github.io/CWG/issues/24.html">24</a></td>
@@ -195,19 +195,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/25.html">25</a></td>
<td>TC1</td>
<td>Exception specifications and pointers to members</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 4</td>
</tr>
<tr id="26">
<td><a href="https://cplusplus.github.io/CWG/issues/26.html">26</a></td>
<td>NAD</td>
<td>Copy constructors and default arguments</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="27">
<td><a href="https://cplusplus.github.io/CWG/issues/27.html">27</a></td>
<td>NAD</td>
<td>Overload ambiguities for builtin ?: prototypes</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="28">
<td><a href="https://cplusplus.github.io/CWG/issues/28.html">28</a></td>
@@ -273,7 +273,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/38.html">38</a></td>
<td>TC1</td>
<td>Explicit template arguments and operator functions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="39">
<td><a href="https://cplusplus.github.io/CWG/issues/39.html">39</a></td>
@@ -291,13 +291,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/41.html">41</a></td>
<td>TC1</td>
<td>Clarification of lookup of names after declarator-id</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="42">
<td><a href="https://cplusplus.github.io/CWG/issues/42.html">42</a></td>
<td>NAD</td>
<td>Redefining names from base classes</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="43">
<td><a href="https://cplusplus.github.io/CWG/issues/43.html">43</a></td>
@@ -315,13 +315,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/45.html">45</a></td>
<td>CD1</td>
<td>Access to nested classes</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="46">
<td><a href="https://cplusplus.github.io/CWG/issues/46.html">46</a></td>
<td>NAD</td>
<td>Explicit instantiation of member templates</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="47">
<td><a href="https://cplusplus.github.io/CWG/issues/47.html">47</a></td>
@@ -333,7 +333,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/48.html">48</a></td>
<td>TC1</td>
<td>Definitions of unused static members</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="49">
<td><a href="https://cplusplus.github.io/CWG/issues/49.html">49</a></td>
@@ -345,7 +345,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/50.html">50</a></td>
<td>NAD</td>
<td>Converting pointer to incomplete type to same type</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="51">
<td><a href="https://cplusplus.github.io/CWG/issues/51.html">51</a></td>
@@ -363,7 +363,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/53.html">53</a></td>
<td>TC1</td>
<td>Lvalue-to-rvalue conversion before certain static_casts</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="54">
<td><a href="https://cplusplus.github.io/CWG/issues/54.html">54</a></td>
@@ -375,13 +375,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/55.html">55</a></td>
<td>NAD</td>
<td>Adding/subtracting pointer and enumeration value</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="56">
<td><a href="https://cplusplus.github.io/CWG/issues/56.html">56</a></td>
<td>TC1</td>
<td>Redeclaring typedefs within classes</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="57">
<td><a href="https://cplusplus.github.io/CWG/issues/57.html">57</a></td>
@@ -399,13 +399,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/59.html">59</a></td>
<td>TC1</td>
<td>Clarification of overloading and UDC to reference type</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="60">
<td><a href="https://cplusplus.github.io/CWG/issues/60.html">60</a></td>
<td>CD1</td>
<td>Reference binding and valid conversion sequences</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="61">
<td><a href="https://cplusplus.github.io/CWG/issues/61.html">61</a></td>
@@ -423,13 +423,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/63.html">63</a></td>
<td>CD1</td>
<td>Class instantiation from pointer conversion to void*, null and self</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="64">
<td><a href="https://cplusplus.github.io/CWG/issues/64.html">64</a></td>
<td>TC1</td>
<td>Partial ordering to disambiguate explicit specialization</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="65">
<td><a href="https://cplusplus.github.io/CWG/issues/65.html">65</a></td>
@@ -465,7 +465,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/70.html">70</a></td>
<td>CD1</td>
<td>Is an array bound a nondeduced context?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="71">
<td><a href="https://cplusplus.github.io/CWG/issues/71.html">71</a></td>
@@ -489,25 +489,25 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/74.html">74</a></td>
<td>TC1</td>
<td>Enumeration value in direct-new-declarator</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="75">
<td><a href="https://cplusplus.github.io/CWG/issues/75.html">75</a></td>
<td>TC1</td>
<td>In-class initialized members must be const</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="76">
<td><a href="https://cplusplus.github.io/CWG/issues/76.html">76</a></td>
<td>TC1</td>
<td>Are const volatile variables considered "constant expressions"?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="77">
<td><a href="https://cplusplus.github.io/CWG/issues/77.html">77</a></td>
<td>CD1</td>
<td>The definition of friend does not allow nested classes to be friends</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="78">
<td><a href="https://cplusplus.github.io/CWG/issues/78.html">78</a></td>
@@ -543,13 +543,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/83.html">83</a></td>
<td>TC1</td>
<td>Overloading and deprecated conversion of string literal</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="84">
<td><a href="https://cplusplus.github.io/CWG/issues/84.html">84</a></td>
<td>TC1</td>
<td>Overloading and conversion loophole used by <TT>auto_ptr</TT></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="85">
<td><a href="https://cplusplus.github.io/CWG/issues/85.html">85</a></td>
@@ -585,13 +585,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/90.html">90</a></td>
<td>TC1</td>
<td>Should the enclosing class be an "associated class" too?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="91">
<td><a href="https://cplusplus.github.io/CWG/issues/91.html">91</a></td>
<td>NAD</td>
<td>A union's associated types should include the union itself</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="92">
<td><a href="https://cplusplus.github.io/CWG/issues/92.html">92</a></td>
@@ -609,7 +609,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/94.html">94</a></td>
<td>TC1</td>
<td>Inconsistencies in the descriptions of constant expressions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="95">
<td><a href="https://cplusplus.github.io/CWG/issues/95.html">95</a></td>
@@ -627,13 +627,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/97.html">97</a></td>
<td>NAD</td>
<td>Use of bool constants in integral constant expressions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="98">
<td><a href="https://cplusplus.github.io/CWG/issues/98.html">98</a></td>
<td>TC1</td>
<td>Branching into try block</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="99">
<td><a href="https://cplusplus.github.io/CWG/issues/99.html">99</a></td>
@@ -645,7 +645,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/100.html">100</a></td>
<td>TC1</td>
<td>Clarify why string literals are not allowed as template arguments</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="101">
<td><a href="https://cplusplus.github.io/CWG/issues/101.html">101</a></td>
@@ -657,7 +657,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/102.html">102</a></td>
<td>NAD</td>
<td>Operator lookup rules do not work well with parts of the library</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="103">
<td><a href="https://cplusplus.github.io/CWG/issues/103.html">103</a></td>
@@ -687,7 +687,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/107.html">107</a></td>
<td>NAD</td>
<td>Linkage of operator functions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="108">
<td><a href="https://cplusplus.github.io/CWG/issues/108.html">108</a></td>
@@ -699,7 +699,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/109.html">109</a></td>
<td>NAD</td>
<td>Allowing <TT>::template</TT> in <I>using-declaration</I>s</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="110">
<td><a href="https://cplusplus.github.io/CWG/issues/110.html">110</a></td>
@@ -717,19 +717,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/112.html">112</a></td>
<td>CD1</td>
<td>Array types and cv-qualifiers</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="113">
<td><a href="https://cplusplus.github.io/CWG/issues/113.html">113</a></td>
<td>CD1</td>
<td>Visibility of called function</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="114">
<td><a href="https://cplusplus.github.io/CWG/issues/114.html">114</a></td>
<td>NAD</td>
<td>Virtual overriding by template member function specializations</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="115">
<td><a href="https://cplusplus.github.io/CWG/issues/115.html">115</a></td>
@@ -741,7 +741,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/116.html">116</a></td>
<td>TC1</td>
<td>Equivalent and functionally-equivalent function templates</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="117">
<td><a href="https://cplusplus.github.io/CWG/issues/117.html">117</a></td>
@@ -771,13 +771,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/121.html">121</a></td>
<td>TC1</td>
<td>Dependent type names with non-dependent <I>nested-name-specifier</I>s</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="122">
<td><a href="https://cplusplus.github.io/CWG/issues/122.html">122</a></td>
<td>CD1</td>
<td><I>template-id</I>s as <I>unqualified-id</I>s</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="123">
<td><a href="https://cplusplus.github.io/CWG/issues/123.html">123</a></td>
@@ -795,7 +795,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/125.html">125</a></td>
<td>CD1</td>
<td>Ambiguity in <TT>friend</TT> declaration syntax</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="126">
<td><a href="https://cplusplus.github.io/CWG/issues/126.html">126</a></td>
@@ -813,7 +813,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/128.html">128</a></td>
<td>TC1</td>
<td>Casting between enum types</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="129">
<td><a href="https://cplusplus.github.io/CWG/issues/129.html">129</a></td>
@@ -855,7 +855,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/135.html">135</a></td>
<td>TC1</td>
<td>Class type in in-class member function definitions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="136">
<td><a href="https://cplusplus.github.io/CWG/issues/136.html">136</a></td>
@@ -867,7 +867,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/137.html">137</a></td>
<td>TC1</td>
<td><TT>static_cast</TT> of <I>cv</I> <TT>void*</TT></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="138">
<td><a href="https://cplusplus.github.io/CWG/issues/138.html">138</a></td>
@@ -879,13 +879,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/139.html">139</a></td>
<td>CD1</td>
<td>Error in <TT>friend</TT> lookup example</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="140">
<td><a href="https://cplusplus.github.io/CWG/issues/140.html">140</a></td>
<td>CD1</td>
<td>Agreement of parameter declarations</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="141">
<td><a href="https://cplusplus.github.io/CWG/issues/141.html">141</a></td>
@@ -903,7 +903,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/143.html">143</a></td>
<td>CD1</td>
<td>Friends and Koenig lookup</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="144">
<td><a href="https://cplusplus.github.io/CWG/issues/144.html">144</a></td>
@@ -915,7 +915,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/145.html">145</a></td>
<td>TC1</td>
<td>Deprecation of prefix <TT>++</TT></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="146">
<td><a href="https://cplusplus.github.io/CWG/issues/146.html">146</a></td>
@@ -927,13 +927,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/147.html">147</a></td>
<td>TC1</td>
<td>Naming the constructor</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="148">
<td><a href="https://cplusplus.github.io/CWG/issues/148.html">148</a></td>
<td>TC1</td>
<td>POD classes and pointers to members</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="149">
<td><a href="https://cplusplus.github.io/CWG/issues/149.html">149</a></td>
@@ -957,7 +957,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/152.html">152</a></td>
<td>TC1</td>
<td><TT>explicit</TT> copy constructors</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="153">
<td><a href="https://cplusplus.github.io/CWG/issues/153.html">153</a></td>
@@ -969,7 +969,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/154.html">154</a></td>
<td>NAD</td>
<td>Anonymous unions in unnamed namespaces</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="155">
<td><a href="https://cplusplus.github.io/CWG/issues/155.html">155</a></td>
@@ -1029,7 +1029,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/164.html">164</a></td>
<td>TC1</td>
<td>Overlap between Koenig and normal lookup</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="165">
<td><a href="https://cplusplus.github.io/CWG/issues/165.html">165</a></td>
@@ -1059,7 +1059,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/169.html">169</a></td>
<td>NAD</td>
<td><I>template-id</I>s in <I>using-declaration</I>s</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="170">
<td><a href="https://cplusplus.github.io/CWG/issues/170.html">170</a></td>
@@ -1077,13 +1077,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/172.html">172</a></td>
<td>CD1</td>
<td>Unsigned int as underlying type of enum</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="173">
<td><a href="https://cplusplus.github.io/CWG/issues/173.html">173</a></td>
<td>TC1</td>
<td>Constraints on execution character set</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="174">
<td><a href="https://cplusplus.github.io/CWG/issues/174.html">174</a></td>
@@ -1107,19 +1107,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/177.html">177</a></td>
<td>CD1</td>
<td>Lvalues vs rvalues in copy-initialization</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="178">
<td><a href="https://cplusplus.github.io/CWG/issues/178.html">178</a></td>
<td>TC1</td>
<td>More on value-initialization</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="179">
<td><a href="https://cplusplus.github.io/CWG/issues/179.html">179</a></td>
<td>TC1</td>
<td>Function pointers and subtraction</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="180">
<td><a href="https://cplusplus.github.io/CWG/issues/180.html">180</a></td>
@@ -1131,7 +1131,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/181.html">181</a></td>
<td>TC1</td>
<td>Errors in template <I>template-parameter</I> example</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="182">
<td><a href="https://cplusplus.github.io/CWG/issues/182.html">182</a></td>
@@ -1149,7 +1149,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/184.html">184</a></td>
<td>CD1</td>
<td>Default arguments in template <I>template-parameter</I>s</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="185">
<td><a href="https://cplusplus.github.io/CWG/issues/185.html">185</a></td>
@@ -1173,7 +1173,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/188.html">188</a></td>
<td>TC1</td>
<td>Comma operator and rvalue conversion</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="189">
<td><a href="https://cplusplus.github.io/CWG/issues/189.html">189</a></td>
@@ -1191,7 +1191,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/191.html">191</a></td>
<td>CD6</td>
<td>Name lookup does not handle complex nesting</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="192">
<td><a href="https://cplusplus.github.io/CWG/issues/192.html">192</a></td>
@@ -1209,13 +1209,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/194.html">194</a></td>
<td>TC1</td>
<td>Identifying constructors</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="195">
<td><a href="https://cplusplus.github.io/CWG/issues/195.html">195</a></td>
<td>CD1</td>
<td>Converting between function and object pointers</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="196">
<td><a href="https://cplusplus.github.io/CWG/issues/196.html">196</a></td>
@@ -1227,13 +1227,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/197.html">197</a></td>
<td>CD1</td>
<td>Issues with two-stage lookup of dependent names</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="198">
<td><a href="https://cplusplus.github.io/CWG/issues/198.html">198</a></td>
<td>CD1</td>
<td>Definition of "use" in local and nested classes</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="199">
<td><a href="https://cplusplus.github.io/CWG/issues/199.html">199</a></td>
@@ -1281,13 +1281,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/206.html">206</a></td>
<td>TC1</td>
<td>Semantic constraints on non-dependent names</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="207">
<td><a href="https://cplusplus.github.io/CWG/issues/207.html">207</a></td>
<td>CD1</td>
<td><I>using-declaration</I>s and protected access</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="208">
<td><a href="https://cplusplus.github.io/CWG/issues/208.html">208</a></td>
@@ -1312,7 +1312,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/211.html">211</a></td>
<td>NAD</td>
<td>Constructors should not be allowed to return normally after an exception</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="212">
<td><a href="https://cplusplus.github.io/CWG/issues/212.html">212</a></td>
@@ -1324,13 +1324,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/213.html">213</a></td>
<td>TC1</td>
<td>Lookup in dependent base classes</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="214">
<td><a href="https://cplusplus.github.io/CWG/issues/214.html">214</a></td>
<td>CD1</td>
<td>Partial ordering of function templates is underspecified</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="215">
<td><a href="https://cplusplus.github.io/CWG/issues/215.html">215</a></td>
@@ -1348,13 +1348,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/217.html">217</a></td>
<td>TC1</td>
<td>Default arguments for non-template member functions of class templates</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="218">
<td><a href="https://cplusplus.github.io/CWG/issues/218.html">218</a></td>
<td>CD1</td>
<td>Specification of Koenig lookup</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="219">
<td><a href="https://cplusplus.github.io/CWG/issues/219.html">219</a></td>
@@ -1408,13 +1408,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/227.html">227</a></td>
<td>TC1</td>
<td>How many scopes in an <TT>if</TT> statement?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="228">
<td><a href="https://cplusplus.github.io/CWG/issues/228.html">228</a></td>
<td>CD1</td>
<td>Use of <TT>template</TT> keyword with non-member templates</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="229">
<td><a href="https://cplusplus.github.io/CWG/issues/229.html">229</a></td>
@@ -1432,7 +1432,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/231.html">231</a></td>
<td>NAD</td>
<td>Visibility of names after <I>using-directive</I>s</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="232">
<td><a href="https://cplusplus.github.io/CWG/issues/232.html">232</a></td>
@@ -1480,7 +1480,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/239.html">239</a></td>
<td>CD1</td>
<td>Footnote 116 and Koenig lookup</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="240">
<td><a href="https://cplusplus.github.io/CWG/issues/240.html">240</a></td>
@@ -1492,7 +1492,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/241.html">241</a></td>
<td>TC1</td>
<td>Error in example in 14.8.1</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 9</td>
</tr>
<tr id="242">
<td><a href="https://cplusplus.github.io/CWG/issues/242.html">242</a></td>
@@ -1504,7 +1504,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/243.html">243</a></td>
<td>NAD</td>
<td>Weighting of conversion functions in direct-initialization</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="244">
<td><a href="https://cplusplus.github.io/CWG/issues/244.html">244</a></td>
@@ -1516,7 +1516,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/245.html">245</a></td>
<td>CD1</td>
<td>Name lookup in <I>elaborated-type-specifier</I>s</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="246">
<td><a href="https://cplusplus.github.io/CWG/issues/246.html">246</a></td>
@@ -1528,7 +1528,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/247.html">247</a></td>
<td>NAD</td>
<td>Pointer-to-member casts and function overload resolution</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="248">
<td><a href="https://cplusplus.github.io/CWG/issues/248.html">248</a></td>
@@ -1540,13 +1540,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/249.html">249</a></td>
<td>TC1</td>
<td>What is a member function template?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="250">
<td><a href="https://cplusplus.github.io/CWG/issues/250.html">250</a></td>
<td>TC1</td>
<td>Address of function template specialization with non-deduced template arguments</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="251">
<td><a href="https://cplusplus.github.io/CWG/issues/251.html">251</a></td>
@@ -1576,7 +1576,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/255.html">255</a></td>
<td>CD6</td>
<td>Placement deallocation functions and lookup ambiguity</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="256">
<td><a href="https://cplusplus.github.io/CWG/issues/256.html">256</a></td>
@@ -1618,7 +1618,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/262.html">262</a></td>
<td>CD1</td>
<td>Default arguments and ellipsis</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="263">
<td><a href="https://cplusplus.github.io/CWG/issues/263.html">263</a></td>
@@ -1679,13 +1679,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/272.html">272</a></td>
<td>CD1</td>
<td>Explicit destructor invocation and <I>qualified-id</I>s</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="273">
<td><a href="https://cplusplus.github.io/CWG/issues/273.html">273</a></td>
<td>CD1</td>
<td>POD classes and <TT>operator&()</TT></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="274">
<td><a href="https://cplusplus.github.io/CWG/issues/274.html">274</a></td>
@@ -1745,7 +1745,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/283.html">283</a></td>
<td>CD1</td>
<td>Template <I>type-parameter</I>s are not syntactically <I>type-name</I>s</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="284">
<td><a href="https://cplusplus.github.io/CWG/issues/284.html">284</a></td>
@@ -1757,7 +1757,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/285.html">285</a></td>
<td>NAD</td>
<td>Identifying a function template being specialized</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="286">
<td><a href="https://cplusplus.github.io/CWG/issues/286.html">286</a></td>
@@ -1781,7 +1781,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/289.html">289</a></td>
<td>CD1</td>
<td>Incomplete list of contexts requiring a complete type</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="290">
<td><a href="https://cplusplus.github.io/CWG/issues/290.html">290</a></td>
@@ -1823,7 +1823,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/296.html">296</a></td>
<td>CD1</td>
<td>Can conversion functions be static?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="297">
<td><a href="https://cplusplus.github.io/CWG/issues/297.html">297</a></td>
@@ -1847,7 +1847,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/300.html">300</a></td>
<td>CD1</td>
<td>References to functions in template argument deduction</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="301">
<td><a href="https://cplusplus.github.io/CWG/issues/301.html">301</a></td>
@@ -1967,7 +1967,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/320.html">320</a></td>
<td>CD1</td>
<td>Question on copy constructor elision example</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="321">
<td><a href="https://cplusplus.github.io/CWG/issues/321.html">321</a></td>
@@ -2015,7 +2015,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/328.html">328</a></td>
<td>CD1</td>
<td>Missing requirement that class member types be complete</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="329">
<td><a href="https://cplusplus.github.io/CWG/issues/329.html">329</a></td>
@@ -2045,13 +2045,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/333.html">333</a></td>
<td>NAD</td>
<td>Ambiguous use of "declaration" in disambiguation section</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="334">
<td><a href="https://cplusplus.github.io/CWG/issues/334.html">334</a></td>
<td>NAD</td>
<td>Is a comma-expression dependent if its first operand is?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="335">
<td><a href="https://cplusplus.github.io/CWG/issues/335.html">335</a></td>
@@ -2063,13 +2063,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/336.html">336</a></td>
<td>CD1</td>
<td>Explicit specialization examples are still incorrect</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="337">
<td><a href="https://cplusplus.github.io/CWG/issues/337.html">337</a></td>
<td>CD1</td>
<td>Attempt to create array of abtract type should cause deduction to fail</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="338">
<td><a href="https://cplusplus.github.io/CWG/issues/338.html">338</a></td>
@@ -2087,7 +2087,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/340.html">340</a></td>
<td>NAD</td>
<td>Unclear wording in disambiguation section</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="341">
<td><a href="https://cplusplus.github.io/CWG/issues/341.html">341</a></td>
@@ -2117,7 +2117,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/345.html">345</a></td>
<td>CD1</td>
<td>Misleading comment on example in templates chapter</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="346">
<td><a href="https://cplusplus.github.io/CWG/issues/346.html">346</a></td>
@@ -2129,7 +2129,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/347.html">347</a></td>
<td>NAD</td>
<td>Use of derived class name in defining base class nested class</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="348">
<td><a href="https://cplusplus.github.io/CWG/issues/348.html">348</a></td>
@@ -2171,13 +2171,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/354.html">354</a></td>
<td>CD1</td>
<td>Null as nontype template argument</td>
- <td class="full" align="center">Yes (C++11 onwards)</td>
+ <td class="full" align="center">Clang 3.1 (C++11 onwards)</td>
</tr>
<tr id="355">
<td><a href="https://cplusplus.github.io/CWG/issues/355.html">355</a></td>
<td>C++11</td>
<td>Global-scope <TT>::</TT> in <I>nested-name-specifier</I></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="356">
<td><a href="https://cplusplus.github.io/CWG/issues/356.html">356</a></td>
@@ -2189,25 +2189,25 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/357.html">357</a></td>
<td>CD1</td>
<td>Definition of signature should include name</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="358">
<td><a href="https://cplusplus.github.io/CWG/issues/358.html">358</a></td>
<td>NAD</td>
<td>Namespaces and extern "C"</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="359">
<td><a href="https://cplusplus.github.io/CWG/issues/359.html">359</a></td>
<td>NAD</td>
<td>Type definition in anonymous union</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="360">
<td><a href="https://cplusplus.github.io/CWG/issues/360.html">360</a></td>
<td>CD6</td>
<td>Using-declaration that reduces access</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr class="open" id="361">
<td><a href="https://cplusplus.github.io/CWG/issues/361.html">361</a></td>
@@ -2231,7 +2231,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/364.html">364</a></td>
<td>CD1</td>
<td>Calling overloaded function with static in set, with no object</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="365">
<td><a href="https://cplusplus.github.io/CWG/issues/365.html">365</a></td>
@@ -2243,13 +2243,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/366.html">366</a></td>
<td>CD1</td>
<td>String literal allowed in integral constant expression?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="367">
<td><a href="https://cplusplus.github.io/CWG/issues/367.html">367</a></td>
<td>CD1</td>
<td><TT>throw</TT> operator allowed in constant expression?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="368">
<td><a href="https://cplusplus.github.io/CWG/issues/368.html">368</a></td>
@@ -2309,7 +2309,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/377.html">377</a></td>
<td>CD1</td>
<td>Enum whose enumerators will not fit in any integral type</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="378">
<td><a href="https://cplusplus.github.io/CWG/issues/378.html">378</a></td>
@@ -2333,25 +2333,25 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/381.html">381</a></td>
<td>CD1</td>
<td>Incorrect example of base class member lookup</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="382">
<td><a href="https://cplusplus.github.io/CWG/issues/382.html">382</a></td>
<td>CD1</td>
<td>Allow <TT>typename</TT> outside of templates</td>
- <td class="full" align="center">Yes (C++11 onwards)</td>
+ <td class="full" align="center">Clang 2.7 (C++11 onwards)</td>
</tr>
<tr id="383">
<td><a href="https://cplusplus.github.io/CWG/issues/383.html">383</a></td>
<td>CD1</td>
<td>Is a class with a declared but not defined destructor a POD?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="384">
<td><a href="https://cplusplus.github.io/CWG/issues/384.html">384</a></td>
<td>NAD</td>
<td>Argument-dependent lookup and operator functions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="385">
<td><a href="https://cplusplus.github.io/CWG/issues/385.html">385</a></td>
@@ -2423,7 +2423,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/396.html">396</a></td>
<td>CD1</td>
<td>Misleading note regarding use of <TT>auto</TT> for disambiguation</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="397">
<td><a href="https://cplusplus.github.io/CWG/issues/397.html">397</a></td>
@@ -2435,7 +2435,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/398.html">398</a></td>
<td>CD1</td>
<td>Ambiguous wording on naming a type in deduction</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="399">
<td><a href="https://cplusplus.github.io/CWG/issues/399.html">399</a></td>
@@ -2447,7 +2447,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/400.html">400</a></td>
<td>CD1</td>
<td>Using-declarations and the "struct hack"</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="401">
<td><a href="https://cplusplus.github.io/CWG/issues/401.html">401</a></td>
@@ -2465,7 +2465,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/403.html">403</a></td>
<td>CD1</td>
<td>Reference to a type as a <I>template-id</I></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="404">
<td><a href="https://cplusplus.github.io/CWG/issues/404.html">404</a></td>
@@ -2477,7 +2477,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/405.html">405</a></td>
<td>CD6</td>
<td>Unqualified function name lookup</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="406">
<td><a href="https://cplusplus.github.io/CWG/issues/406.html">406</a></td>
@@ -2501,7 +2501,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/409.html">409</a></td>
<td>CD1</td>
<td>Obsolete paragraph missed by changes for issue 224</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="410">
<td><a href="https://cplusplus.github.io/CWG/issues/410.html">410</a></td>
@@ -2525,7 +2525,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/413.html">413</a></td>
<td>CD1</td>
<td>Definition of "empty class"</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="414">
<td><a href="https://cplusplus.github.io/CWG/issues/414.html">414</a></td>
@@ -2537,13 +2537,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/415.html">415</a></td>
<td>CD1</td>
<td>Template deduction does not cause instantiation</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="416">
<td><a href="https://cplusplus.github.io/CWG/issues/416.html">416</a></td>
<td>CD1</td>
<td>Class must be complete to allow operator lookup?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="417">
<td><a href="https://cplusplus.github.io/CWG/issues/417.html">417</a></td>
@@ -2573,31 +2573,31 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/421.html">421</a></td>
<td>CD1</td>
<td>Is rvalue.field an rvalue?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="422">
<td><a href="https://cplusplus.github.io/CWG/issues/422.html">422</a></td>
<td>NAD</td>
<td>Is a typedef redeclaration allowed with a template type that might be the same?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="423">
<td><a href="https://cplusplus.github.io/CWG/issues/423.html">423</a></td>
<td>NAD</td>
<td>Can a conversion be done on the left operand of a compound assignment?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="424">
<td><a href="https://cplusplus.github.io/CWG/issues/424.html">424</a></td>
<td>CD1</td>
<td>Wording problem with issue 56 resolution on redeclaring typedefs in class scope</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="425">
<td><a href="https://cplusplus.github.io/CWG/issues/425.html">425</a></td>
<td>CD1</td>
<td>Set of candidates for overloaded built-in operator with float operand</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="426">
<td><a href="https://cplusplus.github.io/CWG/issues/426.html">426</a></td>
@@ -2609,13 +2609,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/427.html">427</a></td>
<td>CD1</td>
<td><TT>static_cast</TT> ambiguity: conversion versus cast to derived</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="428">
<td><a href="https://cplusplus.github.io/CWG/issues/428.html">428</a></td>
<td>CD1</td>
<td>Mention of expression with reference type</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="429">
<td><a href="https://cplusplus.github.io/CWG/issues/429.html">429</a></td>
@@ -2627,13 +2627,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/430.html">430</a></td>
<td>CD1</td>
<td>Ordering of expression evaluation in initializer list</td>
- <td class="full" align="center">Yes (C++11 onwards)</td>
+ <td class="full" align="center">Clang 2.7 (C++11 onwards)</td>
</tr>
<tr id="431">
<td><a href="https://cplusplus.github.io/CWG/issues/431.html">431</a></td>
<td>C++11</td>
<td>Defect in wording in 14.2</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="432">
<td><a href="https://cplusplus.github.io/CWG/issues/432.html">432</a></td>
@@ -2645,7 +2645,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/433.html">433</a></td>
<td>CD1</td>
<td>Do elaborated type specifiers in templates inject into enclosing namespace scope?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="434">
<td><a href="https://cplusplus.github.io/CWG/issues/434.html">434</a></td>
@@ -2663,7 +2663,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/436.html">436</a></td>
<td>CD1</td>
<td>Problem in example in 9.6 paragraph 4</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="437">
<td><a href="https://cplusplus.github.io/CWG/issues/437.html">437</a></td>
@@ -2711,7 +2711,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/444.html">444</a></td>
<td>NAD</td>
<td>Overriding and the generated copy assignment operator</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="445">
<td><a href="https://cplusplus.github.io/CWG/issues/445.html">445</a></td>
@@ -2729,7 +2729,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/447.html">447</a></td>
<td>CD1</td>
<td>Is offsetof type-dependent?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="448">
<td><a href="https://cplusplus.github.io/CWG/issues/448.html">448</a></td>
@@ -2747,19 +2747,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/450.html">450</a></td>
<td>CD1</td>
<td>Binding a reference to const to a cv-qualified array rvalue</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.2</td>
</tr>
<tr id="451">
<td><a href="https://cplusplus.github.io/CWG/issues/451.html">451</a></td>
<td>CD1</td>
<td>Expressions with invalid results and ill-formedness</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="452">
<td><a href="https://cplusplus.github.io/CWG/issues/452.html">452</a></td>
<td>CD1</td>
<td>Wording nit on description of <TT>this</TT></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="453">
<td><a href="https://cplusplus.github.io/CWG/issues/453.html">453</a></td>
@@ -2783,13 +2783,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/456.html">456</a></td>
<td>NAD</td>
<td>Is initialized const int or const bool variable a null pointer constant?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="457">
<td><a href="https://cplusplus.github.io/CWG/issues/457.html">457</a></td>
<td>CD1</td>
<td>Wording nit on use of const variables in constant expressions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="458">
<td><a href="https://cplusplus.github.io/CWG/issues/458.html">458</a></td>
@@ -2807,7 +2807,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/460.html">460</a></td>
<td>CD1</td>
<td>Can a <I>using-declaration</I> name a namespace?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="461">
<td><a href="https://cplusplus.github.io/CWG/issues/461.html">461</a></td>
@@ -2849,13 +2849,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/467.html">467</a></td>
<td>NAD</td>
<td>Jump past initialization of local static variable</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="468">
<td><a href="https://cplusplus.github.io/CWG/issues/468.html">468</a></td>
<td>CD1</td>
<td>Allow <TT>::template</TT> outside of templates</td>
- <td class="full" align="center">Yes (C++11 onwards)</td>
+ <td class="full" align="center">Clang 2.7 (C++11 onwards)</td>
</tr>
<tr id="469">
<td><a href="https://cplusplus.github.io/CWG/issues/469.html">469</a></td>
@@ -2867,7 +2867,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/470.html">470</a></td>
<td>CD1</td>
<td>Instantiation of members of an explicitly-instantiated class template</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="471">
<td><a href="https://cplusplus.github.io/CWG/issues/471.html">471</a></td>
@@ -2919,7 +2919,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/478.html">478</a></td>
<td>NAD</td>
<td>May a function parameter be an array of an abstract class type?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="479">
<td><a href="https://cplusplus.github.io/CWG/issues/479.html">479</a></td>
@@ -2931,7 +2931,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/480.html">480</a></td>
<td>CD1</td>
<td>Is a base of a virtual base also virtual?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="481">
<td><a href="https://cplusplus.github.io/CWG/issues/481.html">481</a></td>
@@ -2949,37 +2949,37 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/483.html">483</a></td>
<td>CD3</td>
<td>Normative requirements on integral ranges</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="484">
<td><a href="https://cplusplus.github.io/CWG/issues/484.html">484</a></td>
<td>CD1</td>
<td>Can a <I>base-specifier</I> name a cv-qualified class type?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="485">
<td><a href="https://cplusplus.github.io/CWG/issues/485.html">485</a></td>
<td>CD1</td>
<td>What is a “name”?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="486">
<td><a href="https://cplusplus.github.io/CWG/issues/486.html">486</a></td>
<td>CD1</td>
<td>Invalid return types and template argument deduction</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="487">
<td><a href="https://cplusplus.github.io/CWG/issues/487.html">487</a></td>
<td>NAD</td>
<td>Operator overloading in constant expressions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="488">
<td><a href="https://cplusplus.github.io/CWG/issues/488.html">488</a></td>
<td>CD1</td>
<td>Local types, overload resolution, and template argument deduction</td>
- <td class="full" align="center">Yes (C++11 onwards)</td>
+ <td class="full" align="center">Clang 2.9 (C++11 onwards)</td>
</tr>
<tr id="489">
<td><a href="https://cplusplus.github.io/CWG/issues/489.html">489</a></td>
@@ -3045,7 +3045,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/499.html">499</a></td>
<td>CD2</td>
<td>Throwing an array of unknown size</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="500">
<td><a href="https://cplusplus.github.io/CWG/issues/500.html">500</a></td>
@@ -3057,13 +3057,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/501.html">501</a></td>
<td>NAD</td>
<td>Visibility of friend declarations within the befriending class</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="502">
<td><a href="https://cplusplus.github.io/CWG/issues/502.html">502</a></td>
<td>C++11</td>
<td>Dependency of nested enumerations and enumerators</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="503">
<td><a href="https://cplusplus.github.io/CWG/issues/503.html">503</a></td>
@@ -3081,13 +3081,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/505.html">505</a></td>
<td>CD1</td>
<td>Conditionally-supported behavior for unknown character escapes</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="506">
<td><a href="https://cplusplus.github.io/CWG/issues/506.html">506</a></td>
<td>CD1</td>
<td>Conditionally-supported behavior for non-POD objects passed to ellipsis</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="507">
<td><a href="https://cplusplus.github.io/CWG/issues/507.html">507</a></td>
@@ -3123,7 +3123,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/512.html">512</a></td>
<td>NAD</td>
<td>Union members with user-declared non-default constructors</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="513">
<td><a href="https://cplusplus.github.io/CWG/issues/513.html">513</a></td>
@@ -3135,7 +3135,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/514.html">514</a></td>
<td>CD1</td>
<td>Is the initializer for a namespace member in the scope of the namespace?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="515">
<td><a href="https://cplusplus.github.io/CWG/issues/515.html">515</a></td>
@@ -3159,7 +3159,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/518.html">518</a></td>
<td>CD1</td>
<td>Trailing comma following <I>enumerator-list</I></td>
- <td class="full" align="center">Yes (C++11 onwards)</td>
+ <td class="full" align="center">Clang 2.7 (C++11 onwards)</td>
</tr>
<tr id="519">
<td><a href="https://cplusplus.github.io/CWG/issues/519.html">519</a></td>
@@ -3183,7 +3183,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/522.html">522</a></td>
<td>CD1</td>
<td>Array-to-pointer decay in template argument deduction</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="523">
<td><a href="https://cplusplus.github.io/CWG/issues/523.html">523</a></td>
@@ -3195,19 +3195,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/524.html">524</a></td>
<td>CD1</td>
<td>Can function-notation calls to operator functions be dependent?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="525">
<td><a href="https://cplusplus.github.io/CWG/issues/525.html">525</a></td>
<td>CD1</td>
<td>Missing <TT>*</TT> in example</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="526">
<td><a href="https://cplusplus.github.io/CWG/issues/526.html">526</a></td>
<td>CD1</td>
<td>Confusing aspects in the specification of non-deduced contexts</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="527">
<td><a href="https://cplusplus.github.io/CWG/issues/527.html">527</a></td>
@@ -3231,7 +3231,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/530.html">530</a></td>
<td>CD1</td>
<td>Nontype template arguments in constant expressions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="531">
<td><a href="https://cplusplus.github.io/CWG/issues/531.html">531</a></td>
@@ -3261,7 +3261,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/535.html">535</a></td>
<td>CD3</td>
<td>Copy construction without a copy constructor</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="536">
<td><a href="https://cplusplus.github.io/CWG/issues/536.html">536</a></td>
@@ -3287,25 +3287,25 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/539.html">539</a></td>
<td>CD3</td>
<td>Constraints on <I>type-specifier-seq</I></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="540">
<td><a href="https://cplusplus.github.io/CWG/issues/540.html">540</a></td>
<td>CD1</td>
<td>Propagation of cv-qualifiers in reference-to-reference collapse</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="541">
<td><a href="https://cplusplus.github.io/CWG/issues/541.html">541</a></td>
<td>CD2</td>
<td>Dependent function types</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="542">
<td><a href="https://cplusplus.github.io/CWG/issues/542.html">542</a></td>
<td>CD2</td>
<td>Value initialization of arrays of POD-structs</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.5</td>
</tr>
<tr id="543">
<td><a href="https://cplusplus.github.io/CWG/issues/543.html">543</a></td>
@@ -3317,7 +3317,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/544.html">544</a></td>
<td>NAD</td>
<td>Base class lookup in explicit specialization</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="545">
<td><a href="https://cplusplus.github.io/CWG/issues/545.html">545</a></td>
@@ -3329,7 +3329,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/546.html">546</a></td>
<td>C++11</td>
<td>Explicit instantiation of class template members</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="547">
<td><a href="https://cplusplus.github.io/CWG/issues/547.html">547</a></td>
@@ -3359,13 +3359,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/551.html">551</a></td>
<td>CD1</td>
<td>When is <TT>inline</TT> permitted in an explicit instantiation?</td>
- <td class="full" align="center">Yes (C++11 onwards)</td>
+ <td class="full" align="center">Clang 2.7 (C++11 onwards)</td>
</tr>
<tr id="552">
<td><a href="https://cplusplus.github.io/CWG/issues/552.html">552</a></td>
<td>NAD</td>
<td>Use of <TT>typename</TT> in the type in a non-type <I>parameter-declaration</I></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="553">
<td><a href="https://cplusplus.github.io/CWG/issues/553.html">553</a></td>
@@ -3407,7 +3407,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/559.html">559</a></td>
<td>CD1</td>
<td>Editing error in issue 382 resolution</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="560">
<td><a href="https://cplusplus.github.io/CWG/issues/560.html">560</a></td>
@@ -3419,7 +3419,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/561.html">561</a></td>
<td>CD2</td>
<td>Internal linkage functions in dependent name lookup</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="562">
<td><a href="https://cplusplus.github.io/CWG/issues/562.html">562</a></td>
@@ -3437,19 +3437,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/564.html">564</a></td>
<td>CD2</td>
<td>Agreement of language linkage or <I>linkage-specification</I>s?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="565">
<td><a href="https://cplusplus.github.io/CWG/issues/565.html">565</a></td>
<td>CD3</td>
<td>Conflict rules for <I>using-declaration</I>s naming function templates</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="566">
<td><a href="https://cplusplus.github.io/CWG/issues/566.html">566</a></td>
<td>NAD</td>
<td>Conversion of negative floating point values to integer type</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="567">
<td><a href="https://cplusplus.github.io/CWG/issues/567.html">567</a></td>
@@ -3467,7 +3467,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/569.html">569</a></td>
<td>CD2</td>
<td>Spurious semicolons at namespace scope should be allowed</td>
- <td class="full" align="center">Yes (C++11 onwards)</td>
+ <td class="full" align="center">Clang 2.7 (C++11 onwards)</td>
</tr>
<tr id="570">
<td><a href="https://cplusplus.github.io/CWG/issues/570.html">570</a></td>
@@ -3485,7 +3485,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/572.html">572</a></td>
<td>C++11</td>
<td>Standard conversions for non-built-in types</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="573">
<td><a href="https://cplusplus.github.io/CWG/issues/573.html">573</a></td>
@@ -3503,7 +3503,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/575.html">575</a></td>
<td>C++11</td>
<td>Criteria for deduction failure</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="576">
<td><a href="https://cplusplus.github.io/CWG/issues/576.html">576</a></td>
@@ -3581,19 +3581,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/588.html">588</a></td>
<td>CD2</td>
<td>Searching dependent bases of classes local to function templates</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="589">
<td><a href="https://cplusplus.github.io/CWG/issues/589.html">589</a></td>
<td>CD2</td>
<td>Direct binding of class and array rvalues in reference initialization</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="590">
<td><a href="https://cplusplus.github.io/CWG/issues/590.html">590</a></td>
<td>C++11</td>
<td>Nested classes and the “current instantiation”</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="591">
<td><a href="https://cplusplus.github.io/CWG/issues/591.html">591</a></td>
@@ -3641,7 +3641,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/598.html">598</a></td>
<td>CD2</td>
<td>Associated namespaces of overloaded functions and function templates</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="599">
<td><a href="https://cplusplus.github.io/CWG/issues/599.html">599</a></td>
@@ -3659,19 +3659,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/601.html">601</a></td>
<td>CD2</td>
<td>Type of literals in preprocessing expressions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="602">
<td><a href="https://cplusplus.github.io/CWG/issues/602.html">602</a></td>
<td>C++11</td>
<td>When is the injected-class-name of a class template a template?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="603">
<td><a href="https://cplusplus.github.io/CWG/issues/603.html">603</a></td>
<td>CD1</td>
<td>Type equivalence and unsigned overflow</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="604">
<td><a href="https://cplusplus.github.io/CWG/issues/604.html">604</a></td>
@@ -3695,13 +3695,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/607.html">607</a></td>
<td>CD6</td>
<td>Lookup of <I>mem-initializer-id</I>s</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="608">
<td><a href="https://cplusplus.github.io/CWG/issues/608.html">608</a></td>
<td>CD2</td>
<td>Determining the final overrider of a virtual function</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="609">
<td><a href="https://cplusplus.github.io/CWG/issues/609.html">609</a></td>
@@ -3713,13 +3713,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/610.html">610</a></td>
<td>NAD</td>
<td>Computing the negative of <TT>0U</TT></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="611">
<td><a href="https://cplusplus.github.io/CWG/issues/611.html">611</a></td>
<td>CD2</td>
<td>Zero-initializing references</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="612">
<td><a href="https://cplusplus.github.io/CWG/issues/612.html">612</a></td>
@@ -3731,19 +3731,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/613.html">613</a></td>
<td>CD1</td>
<td>Unevaluated uses of non-static class members</td>
- <td class="full" align="center">Yes (C++11 onwards)</td>
+ <td class="full" align="center">Clang 3.1 (C++11 onwards)</td>
</tr>
<tr id="614">
<td><a href="https://cplusplus.github.io/CWG/issues/614.html">614</a></td>
<td>CD1</td>
<td>Results of integer <TT>/</TT> and <TT>%</TT></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="615">
<td><a href="https://cplusplus.github.io/CWG/issues/615.html">615</a></td>
<td>C++11</td>
<td>Incorrect description of variables that can be initialized</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="616">
<td><a href="https://cplusplus.github.io/CWG/issues/616.html">616</a></td>
@@ -3761,13 +3761,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/618.html">618</a></td>
<td>CD2</td>
<td>Casts in preprocessor conditional expressions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="619">
<td><a href="https://cplusplus.github.io/CWG/issues/619.html">619</a></td>
<td>C++11</td>
<td>Completeness of array types</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.4</td>
</tr>
<tr id="620">
<td><a href="https://cplusplus.github.io/CWG/issues/620.html">620</a></td>
@@ -3779,7 +3779,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/621.html">621</a></td>
<td>C++11</td>
<td>Template argument deduction from function return types</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="622">
<td><a href="https://cplusplus.github.io/CWG/issues/622.html">622</a></td>
@@ -3803,19 +3803,19 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/625.html">625</a></td>
<td>CD2</td>
<td>Use of <TT>auto</TT> as a <I>template-argument</I></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.9</td>
</tr>
<tr id="626">
<td><a href="https://cplusplus.github.io/CWG/issues/626.html">626</a></td>
<td>CD2</td>
<td>Preprocessor string literals</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="627">
<td><a href="https://cplusplus.github.io/CWG/issues/627.html">627</a></td>
<td>NAD</td>
<td>Values behaving as types</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="628">
<td><a href="https://cplusplus.github.io/CWG/issues/628.html">628</a></td>
@@ -3833,7 +3833,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/630.html">630</a></td>
<td>CD2</td>
<td>Equality of narrow and wide character values in the basic character set</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="631">
<td><a href="https://cplusplus.github.io/CWG/issues/631.html">631</a></td>
@@ -3845,7 +3845,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/632.html">632</a></td>
<td>CD1</td>
<td>Brace-enclosed initializer for scalar member of aggregate</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="633">
<td><a href="https://cplusplus.github.io/CWG/issues/633.html">633</a></td>
@@ -3857,13 +3857,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/634.html">634</a></td>
<td>CD1</td>
<td>Conditionally-supported behavior for non-POD objects passed to ellipsis redux</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="635">
<td><a href="https://cplusplus.github.io/CWG/issues/635.html">635</a></td>
<td>NAD</td>
<td>Names of constructors and destructors of templates</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="636">
<td><a href="https://cplusplus.github.io/CWG/issues/636.html">636</a></td>
@@ -3875,7 +3875,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/637.html">637</a></td>
<td>CD1</td>
<td>Sequencing rules and example disagree</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="638">
<td><a href="https://cplusplus.github.io/CWG/issues/638.html">638</a></td>
@@ -3899,13 +3899,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/641.html">641</a></td>
<td>CD2</td>
<td>Overload resolution and conversion-to-same-type operators</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="642">
<td><a href="https://cplusplus.github.io/CWG/issues/642.html">642</a></td>
<td>CD2</td>
<td>Definition and use of “block scope” and “local scope”</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="643">
<td><a href="https://cplusplus.github.io/CWG/issues/643.html">643</a></td>
@@ -3941,7 +3941,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/648.html">648</a></td>
<td>CD1</td>
<td>Constant expressions in constexpr initializers</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="649">
<td><a href="https://cplusplus.github.io/CWG/issues/649.html">649</a></td>
@@ -3959,13 +3959,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/651.html">651</a></td>
<td>CD1</td>
<td>Problems in <TT>decltype</TT> specification and examples</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="652">
<td><a href="https://cplusplus.github.io/CWG/issues/652.html">652</a></td>
<td>CD2</td>
<td>Compile-time evaluation of floating-point expressions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="653">
<td><a href="https://cplusplus.github.io/CWG/issues/653.html">653</a></td>
@@ -3983,13 +3983,13 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/655.html">655</a></td>
<td>C++11</td>
<td>Initialization not specified for forwarding constructors</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="656">
<td><a href="https://cplusplus.github.io/CWG/issues/656.html">656</a></td>
<td>CD2</td>
<td>Direct binding to the result of a conversion operator</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.8</td>
</tr>
<tr id="657">
<td><a href="https://cplusplus.github.io/CWG/issues/657.html">657</a></td>
@@ -4025,7 +4025,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/662.html">662</a></td>
<td>NAD</td>
<td>Forming a pointer to a reference type</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="663">
<td><a href="https://cplusplus.github.io/CWG/issues/663.html">663</a></td>
@@ -4037,7 +4037,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/664.html">664</a></td>
<td>CD2</td>
<td>Direct binding of references to non-class rvalue references</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="665">
<td><a href="https://cplusplus.github.io/CWG/issues/665.html">665</a></td>
@@ -4067,7 +4067,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/669.html">669</a></td>
<td>NAD</td>
<td>Confusing specification of the meaning of <TT>decltype</TT></td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="670">
<td><a href="https://cplusplus.github.io/CWG/issues/670.html">670</a></td>
@@ -4091,7 +4091,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/673.html">673</a></td>
<td>NAD</td>
<td>Injection of names from <I>elaborated-type-specifier</I>s in <TT>friend</TT> declarations</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="674">
<td><a href="https://cplusplus.github.io/CWG/issues/674.html">674</a></td>
@@ -4127,7 +4127,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/679.html">679</a></td>
<td>CD1</td>
<td>Equivalence of <I>template-id</I>s and operator function templates</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="680">
<td><a href="https://cplusplus.github.io/CWG/issues/680.html">680</a></td>
@@ -4151,7 +4151,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/683.html">683</a></td>
<td>CD1</td>
<td>Requirements for trivial subobject special functions</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="684">
<td><a href="https://cplusplus.github.io/CWG/issues/684.html">684</a></td>
@@ -4163,7 +4163,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/685.html">685</a></td>
<td>CD2</td>
<td>Integral promotion of enumeration ignores fixed underlying type</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 10</td>
</tr>
<tr id="686">
<td><a href="https://cplusplus.github.io/CWG/issues/686.html">686</a></td>
@@ -4283,7 +4283,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/705.html">705</a></td>
<td>CD2</td>
<td>Suppressing argument-dependent lookup via parentheses</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="706">
<td><a href="https://cplusplus.github.io/CWG/issues/706.html">706</a></td>
@@ -5663,7 +5663,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/974.html">974</a></td>
<td>CD3</td>
<td>Default arguments for lambdas</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.3</td>
</tr>
<tr id="975">
<td><a href="https://cplusplus.github.io/CWG/issues/975.html">975</a></td>
@@ -5681,7 +5681,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/977.html">977</a></td>
<td>CD3</td>
<td>When is an enumeration type complete?</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="978">
<td><a href="https://cplusplus.github.io/CWG/issues/978.html">978</a></td>
@@ -8477,7 +8477,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/1443.html">1443</a></td>
<td>NAD</td>
<td>Default arguments and non-static data members</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr class="open" id="1444">
<td><a href="https://cplusplus.github.io/CWG/issues/1444.html">1444</a></td>
@@ -9197,7 +9197,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/1563.html">1563</a></td>
<td>CD3</td>
<td>List-initialization and overloaded function disambiguation</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="1564">
<td><a href="https://cplusplus.github.io/CWG/issues/1564.html">1564</a></td>
@@ -10587,7 +10587,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/1794.html">1794</a></td>
<td>C++17</td>
<td><TT>template</TT> keyword and alias templates</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="1795">
<td><a href="https://cplusplus.github.io/CWG/issues/1795.html">1795</a></td>
@@ -10707,7 +10707,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/1814.html">1814</a></td>
<td>CD4</td>
<td>Default arguments in <I>lambda-expression</I>s</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="1815">
<td><a href="https://cplusplus.github.io/CWG/issues/1815.html">1815</a></td>
@@ -10755,7 +10755,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/1822.html">1822</a></td>
<td>CD6</td>
<td>Lookup of parameter names in <I>lambda-expression</I>s</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.1</td>
</tr>
<tr id="1823">
<td><a href="https://cplusplus.github.io/CWG/issues/1823.html">1823</a></td>
@@ -12193,7 +12193,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/2061.html">2061</a></td>
<td>CD4</td>
<td>Inline namespace after simplifications</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="2062">
<td><a href="https://cplusplus.github.io/CWG/issues/2062.html">2062</a></td>
@@ -12445,7 +12445,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/2103.html">2103</a></td>
<td>CD5</td>
<td>Lvalue-to-rvalue conversion is irrelevant in odr-use of a reference</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="2104">
<td><a href="https://cplusplus.github.io/CWG/issues/2104.html">2104</a></td>
@@ -12907,7 +12907,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/2180.html">2180</a></td>
<td>CD4</td>
<td>Virtual bases in destructors and defaulted assignment operators</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 3.0</td>
</tr>
<tr id="2181">
<td><a href="https://cplusplus.github.io/CWG/issues/2181.html">2181</a></td>
@@ -13105,7 +13105,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/2213.html">2213</a></td>
<td>CD6</td>
<td>Forward declaration of partial specializations</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 2.7</td>
</tr>
<tr id="2214">
<td><a href="https://cplusplus.github.io/CWG/issues/2214.html">2214</a></td>
@@ -14009,7 +14009,7 @@ <h2 id="cxxdr">C++ defect report implementation status</h2>
<td><a href="https://cplusplus.github.io/CWG/issues/2363.html">2363</a></td>
<td>NAD</td>
<td>Opaque enumeration friend declarations</td>
- <td class="full" align="center">Yes</td>
+ <td class="full" align="center">Clang 19</td>
</tr>
<tr id="2364">
<td><a href="https://cplusplus.github.io/CWG/issues/2364.html">2364</a></td>
More information about the cfe-commits
mailing list