@@ -64,7 +64,7 @@ namespace dr4 { // dr4: yes
64
64
}
65
65
}
66
66
67
- namespace dr5 { // dr5: yes
67
+ namespace dr5 { // dr5: 3.1
68
68
struct A {} a;
69
69
struct B {
70
70
B (const A&);
@@ -78,7 +78,7 @@ namespace dr5 { // dr5: yes
78
78
const C c = e;
79
79
}
80
80
81
- namespace dr7 { // dr7: yes
81
+ namespace dr7 { // dr7: 3.4
82
82
class A { public: ~A (); };
83
83
class B : virtual private A {}; // expected-note 2 {{declared private here}}
84
84
class C : public B {} c; // expected-error 2 {{inherited virtual base class 'A' has private destructor}} \
@@ -114,7 +114,7 @@ namespace dr8 { // dr8: dup 45
114
114
A::T<A::U, A::k, &A::f> *A::g () { return 0 ; }
115
115
}
116
116
117
- namespace dr9 { // dr9: yes
117
+ namespace dr9 { // dr9: 2.8
118
118
struct B {
119
119
protected:
120
120
int m; // expected-note {{here}}
@@ -175,7 +175,7 @@ namespace dr13 { // dr13: no
175
175
int a4 = h(g);
176
176
}
177
177
178
- namespace dr14 { // dr14: yes
178
+ namespace dr14 { // dr14: 3.4
179
179
namespace X { extern " C" int dr14_f (); }
180
180
namespace Y { extern " C" int dr14_f (); }
181
181
using namespace X ;
@@ -201,7 +201,7 @@ namespace dr15 { // dr15: yes
201
201
template <typename T> void f (int = 0 ); // expected-error {{default arguments cannot be added}}
202
202
}
203
203
204
- namespace dr16 { // dr16: yes
204
+ namespace dr16 { // dr16: 2.8
205
205
class A { // expected-note {{here}}
206
206
void f (); // expected-note {{here}}
207
207
friend class C ;
@@ -230,7 +230,7 @@ namespace dr17 { // dr17: yes
230
230
231
231
// dr18: sup 577
232
232
233
- namespace dr19 { // dr19: yes
233
+ namespace dr19 { // dr19: 3.1
234
234
struct A {
235
235
int n; // expected-note {{here}}
236
236
};
@@ -243,7 +243,7 @@ namespace dr19 { // dr19: yes
243
243
};
244
244
}
245
245
246
- namespace dr20 { // dr20: yes
246
+ namespace dr20 { // dr20: 2.8
247
247
class X {
248
248
public:
249
249
X ();
@@ -254,7 +254,7 @@ namespace dr20 { // dr20: yes
254
254
X x = f(); // expected-error {{private}}
255
255
}
256
256
257
- namespace dr21 { // dr21: yes
257
+ namespace dr21 { // dr21: 3.4
258
258
template <typename T> struct A ;
259
259
struct X {
260
260
template <typename T = int > friend struct A ; // expected-error {{default template argument not permitted on a friend template}}
@@ -398,7 +398,7 @@ namespace dr30 { // dr30: sup 468 c++11
398
398
#endif
399
399
}
400
400
401
- namespace dr31 { // dr31: yes
401
+ namespace dr31 { // dr31: 2.8
402
402
class X {
403
403
private:
404
404
void operator delete (void *); // expected-note {{here}}
@@ -410,7 +410,7 @@ namespace dr31 { // dr31: yes
410
410
411
411
// dr32: na
412
412
413
- namespace dr33 { // dr33: yes
413
+ namespace dr33 { // dr33: 9
414
414
namespace X { struct S ; void f (void (*)(S)); } // expected-note {{candidate}}
415
415
namespace Y { struct T ; void f (void (*)(T)); } // expected-note {{candidate}}
416
416
void g (X::S);
@@ -667,7 +667,7 @@ namespace dr48 { // dr48: yes
667
667
const int &c = S::o;
668
668
}
669
669
670
- namespace dr49 { // dr49: yes
670
+ namespace dr49 { // dr49: 2.8
671
671
template <int *> struct A {}; // expected-note 0-2{{here}}
672
672
int k;
673
673
#if __has_feature(cxx_constexpr)
@@ -703,7 +703,7 @@ namespace dr50 { // dr50: yes
703
703
X *u = dynamic_cast <X*>(p); // expected-error {{incomplete}}
704
704
}
705
705
706
- namespace dr51 { // dr51: yes
706
+ namespace dr51 { // dr51: 2.8
707
707
struct A {};
708
708
struct B : A {};
709
709
struct S {
@@ -713,9 +713,7 @@ namespace dr51 { // dr51: yes
713
713
A &a = s;
714
714
}
715
715
716
- namespace dr52 { // dr52: yes
717
- struct A { int n; }; // expected-note {{here}}
718
- struct B : private A {} b; // expected-note 2{{private}}
716
+ namespace dr52 { // dr52: 2.8
719
717
// FIXME: This first diagnostic is very strangely worded, and seems to be bogus.
720
718
int k = b.A::n; // expected-error {{'A' is a private member of 'dr52::A'}}
721
719
// expected-error@-1 {{cannot cast 'struct B' to its private base}}
@@ -726,7 +724,7 @@ namespace dr53 { // dr53: yes
726
724
enum E { e } x = static_cast <E>(n);
727
725
}
728
726
729
- namespace dr54 { // dr54: yes
727
+ namespace dr54 { // dr54: 2.8
730
728
struct A { int a; } a;
731
729
struct V { int v; } v;
732
730
struct B : private A , virtual V { int b; } b; // expected-note 6{{private here}}
@@ -777,7 +775,7 @@ namespace dr56 { // dr56: yes
777
775
};
778
776
}
779
777
780
- namespace dr58 { // dr58: yes
778
+ namespace dr58 { // dr58: 3.1
781
779
// FIXME: Ideally, we should have a CodeGen test for this.
782
780
#if __cplusplus >= 201103L
783
781
enum E1 { E1_0 = 0 , E1_1 = 1 };
@@ -834,7 +832,7 @@ namespace dr60 { // dr60: yes
834
832
int &n = f(k);
835
833
}
836
834
837
- namespace dr61 { // dr61: yes
835
+ namespace dr61 { // dr61: 3.4
838
836
struct X {
839
837
static void f ();
840
838
} x;
@@ -849,7 +847,7 @@ namespace dr61 { // dr61: yes
849
847
void (*r)() = y.f; // expected-error {{cannot create a non-constant pointer to member function}}
850
848
}
851
849
852
- namespace dr62 { // dr62: yes
850
+ namespace dr62 { // dr62: 2.9
853
851
struct A {
854
852
struct { int n; } b;
855
853
};
@@ -937,7 +935,7 @@ namespace dr66 { // dr66: no
937
935
938
936
// dr67: na
939
937
940
- namespace dr68 { // dr68: yes
938
+ namespace dr68 { // dr68: 2.8
941
939
template <typename T> struct X {};
942
940
struct ::dr68::X<int > x1;
943
941
struct ::dr68::template X<int > x2;
@@ -962,7 +960,7 @@ namespace dr68 { // dr68: yes
962
960
};
963
961
}
964
962
965
- namespace dr69 { // dr69: yes
963
+ namespace dr69 { // dr69: 9
966
964
template <typename T> static void f () {} // #dr69-f
967
965
// FIXME: Should we warn here?
968
966
inline void g () { f<int >(); }
@@ -1026,7 +1024,7 @@ namespace dr78 { // dr78: sup ????
1026
1024
1027
1025
// dr79: na
1028
1026
1029
- namespace dr80 { // dr80: yes
1027
+ namespace dr80 { // dr80: 2.9
1030
1028
struct A {
1031
1029
int A;
1032
1030
};
@@ -1070,7 +1068,7 @@ namespace dr84 { // dr84: yes
1070
1068
#endif
1071
1069
}
1072
1070
1073
- namespace dr85 { // dr85: yes
1071
+ namespace dr85 { // dr85: 3.4
1074
1072
struct A {
1075
1073
struct B ;
1076
1074
struct B {}; // expected-note{{previous declaration is here}}
@@ -1109,7 +1107,7 @@ namespace dr87 { // dr87: no
1109
1107
X<void (void () throw ())> y;
1110
1108
}
1111
1109
1112
- namespace dr88 { // dr88: yes
1110
+ namespace dr88 { // dr88: 2.8
1113
1111
template <typename T> struct S {
1114
1112
static const int a = 1 ; // expected-note {{previous}}
1115
1113
static const int b;
@@ -1197,7 +1195,7 @@ namespace dr94 { // dr94: yes
1197
1195
int arr[A::n];
1198
1196
}
1199
1197
1200
- namespace dr95 { // dr95: yes
1198
+ namespace dr95 { // dr95: 3.3
1201
1199
struct A ;
1202
1200
struct B ;
1203
1201
namespace N {
0 commit comments