You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: clang/test/SemaCXX/constant-expression-cxx11.cpp
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1862,8 +1862,8 @@ namespace ZeroSizeTypes {
1862
1862
namespaceBadDefaultInit {
1863
1863
template<int N> structX { staticconstint n = N; };
1864
1864
1865
-
structA {
1866
-
int k = // expected-error {{cannot use defaulted default constructor of 'A' within the class outside of member functions because 'k' has an initializer}}
1865
+
structA {// expected-error {{default member initializer for 'k' needed within definition of enclosing class}}
1866
+
int k = // expected-note {{default member initializer declared here}}
1867
1867
X<A().k>::n; // expected-error {{not a constant expression}} expected-note {{implicit default constructor for 'BadDefaultInit::A' first required here}}
// Noexcept::Noexcept is not declared constexpr, therefore noexcept(Noexcept())
17
17
// is false.
18
18
boolThrowSomething() noexcept(false);
19
-
structConstExpr {
20
-
bool b = noexcept(ConstExpr()) && ThrowSomething(); // expected-error {{cannot use defaulted default constructor of 'ConstExpr' within the class outside of member functions}}
19
+
structConstExpr {// expected-error {{default member initializer for 'b' needed}}
20
+
bool b = noexcept(ConstExpr()) && ThrowSomething(); // expected-note {{declared here}}
21
21
// expected-note@-1 {{implicit default constructor for 'InClassInitializers::ConstExpr' first required here}}
22
22
};
23
23
24
24
// Much more obviously broken: we can't parse the initializer without already
25
25
// knowing whether it produces a noexcept expression.
26
-
structTemplateArg {
27
-
int n = ExceptionIf<noexcept(TemplateArg())>::f(); // expected-error {{cannot use defaulted default constructor of 'TemplateArg' within the class outside of member functions}}
26
+
structTemplateArg {// expected-error {{default member initializer for 'n' needed}}
27
+
int n = ExceptionIf<noexcept(TemplateArg())>::f(); // expected-note {{declared here}}
28
28
// expected-note@-1 {{implicit default constructor for 'InClassInitializers::TemplateArg' first required here}}
29
29
};
30
30
31
31
// And within a nested class.
32
32
structNested { // expected-note {{implicit default constructor for 'InClassInitializers::Nested::Inner' first required here}}
33
-
structInner {
34
-
// expected-error@+1 {{cannot use defaulted default constructor of 'Inner' within 'Nested' outside of member functions}}
35
-
int n = ExceptionIf<noexcept(Nested())>::f(); // expected-note {{implicit default constructor for 'InClassInitializers::Nested' first required here}}
33
+
structInner {// expected-error {{default member initializer for 'n' needed}}
34
+
int n = // expected-note {{declared here}}
35
+
ExceptionIf<noexcept(Nested())>::f(); // expected-note {{implicit default constructor for 'InClassInitializers::Nested' first required here}}
36
36
} inner;
37
37
};
38
38
39
39
structNested2 { // expected-error {{implicit default constructor for 'InClassInitializers::Nested2' must explicitly initialize the member 'inner' which does not have a default constructor}}
40
40
structInner;
41
41
int n = Inner().n; // expected-note {{implicit default constructor for 'InClassInitializers::Nested2::Inner' first required here}}
42
-
structInner { // expected-note {{declared here}}
43
-
// expected-error@+1 {{cannot use defaulted default constructor of 'Inner' within 'Nested2' outside of member functions}}
Copy file name to clipboardExpand all lines: clang/test/SemaCXX/member-init.cpp
+10-10Lines changed: 10 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -13,8 +13,8 @@ class NoWarning {
13
13
14
14
boolb();
15
15
int k;
16
-
structRecurse {
17
-
int &n = // expected-error {{cannot use defaulted default constructor of 'Recurse' within the class outside of member functions because 'n' has an initializer}}
16
+
structRecurse {// expected-error {{initializer for 'n' needed}}
17
+
int &n = // expected-note {{declared here}}
18
18
b() ?
19
19
Recurse().n : // expected-note {{implicit default constructor for 'Recurse' first required here}}
20
20
k;
@@ -128,8 +128,8 @@ A::A() {}
128
128
namespacetemplate_default_ctor {
129
129
structA {
130
130
template <typename T>
131
-
structB {
132
-
int m1 = 0; // expected-error {{cannot use defaulted default constructor of 'B' within 'A' outside of member functions because 'm1' has an initializer}}
131
+
structB {// expected-error {{initializer for 'm1' needed}}
132
+
int m1 = 0; // expected-note {{declared here}}
133
133
};
134
134
// expected-note@+1 {{implicit default constructor for 'template_default_ctor::A::B<int>' first required here}}
135
135
enum { NOE = noexcept(B<int>()) };
@@ -138,8 +138,8 @@ struct A {
138
138
139
139
namespacedefault_ctor {
140
140
structA {
141
-
structB {
142
-
int m1 = 0; // expected-error {{cannot use defaulted default constructor of 'B' within 'A' outside of member functions because 'm1' has an initializer}}
141
+
structB {// expected-error {{initializer for 'm1' needed}}
142
+
int m1 = 0; // expected-note {{declared here}}
143
143
};
144
144
// expected-note@+1 {{implicit default constructor for 'default_ctor::A::B' first required here}}
145
145
enum { NOE = noexcept(B()) };
@@ -150,12 +150,12 @@ namespace member_template {
150
150
structA {
151
151
template <typename T>
152
152
structB {
153
-
structC {
154
-
int m1 = 0; // expected-error {{cannot use defaulted default constructor of 'C' within 'A' outside of member functions because 'm1' has an initializer}}
153
+
structC {// expected-error {{initializer for 'm1' needed}}
154
+
int m1 = 0; // expected-note {{declared here}}
155
155
};
156
156
template <typename U>
157
-
structD {
158
-
int m1 = 0; // expected-error {{cannot use defaulted default constructor of 'D' within 'A' outside of member functions because 'm1' has an initializer}}
157
+
structD {// expected-error {{initializer for 'm1' needed}}
0 commit comments