1 // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
5 non_trivial(const non_trivial
&);
6 non_trivial
& operator = (const non_trivial
&);
11 non_trivial nt
; // expected-note {{non-trivial default constructor}}
13 bad_union u
; // expected-error {{call to implicitly-deleted default constructor}}
14 union bad_union2
{ // expected-note {{all data members are const-qualified}}
17 bad_union2 u2
; // expected-error {{call to implicitly-deleted default constructor}}
21 non_trivial nt
; // expected-note {{non-trivial default constructor}}
24 bad_anon a
; // expected-error {{call to implicitly-deleted default constructor}}
26 union { // expected-note {{all data members of an anonymous union member are const-qualified}}
30 bad_anon2 a2
; // expected-error {{call to implicitly-deleted default constructor}}
32 // This would be great except that we implement
46 struct good
: non_trivial
{
51 struct bad_const_inner
{
56 const bad_const_inner g
; // expected-note {{field 'g' of const-qualified type 'const bad_const_inner' would not be initialized}}
58 bad_const bc
; // expected-error {{call to implicitly-deleted default constructor}}
66 no_default() = delete; // expected-note 5{{deleted here}}
69 ~no_dtor() = delete; // expected-note 2{{deleted here}}
72 struct bad_field_default
{
73 no_default nd
; // expected-note {{field 'nd' has a deleted default constructor}}
75 bad_field_default bfd
; // expected-error {{call to implicitly-deleted default constructor}}
76 struct bad_base_default
: no_default
{ // expected-note {{base class 'no_default' has a deleted default constructor}}
78 bad_base_default bbd
; // expected-error {{call to implicitly-deleted default constructor}}
80 struct bad_field_dtor
{
81 no_dtor nd
; // expected-note {{field 'nd' has a deleted destructor}}
83 bad_field_dtor bfx
; // expected-error {{call to implicitly-deleted default constructor}}
84 struct bad_base_dtor
: no_dtor
{ // expected-note {{base class 'no_dtor' has a deleted destructor}}
86 bad_base_dtor bbx
; // expected-error {{call to implicitly-deleted default constructor}}
88 struct ambiguous_default
{
90 ambiguous_default(int = 2);
92 struct has_amb_field
{
93 ambiguous_default ad
; // expected-note {{field 'ad' has multiple default constructors}}
95 has_amb_field haf
; // expected-error {{call to implicitly-deleted default constructor}}
97 class inaccessible_default
{
98 inaccessible_default();
100 struct has_inacc_field
{
101 inaccessible_default id
; // expected-note {{field 'id' has an inaccessible default constructor}}
103 has_inacc_field hif
; // expected-error {{call to implicitly-deleted default constructor}}
105 class friend_default
{
106 friend struct has_friend
;
114 struct defaulted_delete
{
115 no_default nd
; // expected-note 2{{because field 'nd' has a deleted default constructor}}
116 defaulted_delete() = default; // expected-note{{implicitly deleted here}} expected-warning {{implicitly deleted}}
118 defaulted_delete dd
; // expected-error {{call to implicitly-deleted default constructor}}
121 no_default nd
; // expected-note {{because field 'nd' has a deleted default constructor}}
124 late_delete::late_delete() = default; // expected-error {{would delete it}}
126 // See also rdar://problem/8125400.
128 static union {}; // expected-warning {{does not declare anything}}
129 static union { union {}; }; // expected-warning {{does not declare anything}}
130 static union { struct {}; }; // expected-warning {{does not declare anything}}
131 static union { union { union {}; }; }; // expected-warning {{does not declare anything}}
132 static union { union { struct {}; }; }; // expected-warning {{does not declare anything}}
133 static union { struct { union {}; }; }; // expected-warning {{does not declare anything}}
134 static union { struct { struct {}; }; }; // expected-warning {{does not declare anything}}