cxx0x-deleted-default-ctor.cpp revision 1f2f384eb7d0ea368819fe9cc4cc20a4b337ebea
11f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s 21f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt 31f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntstruct non_trivial { 41f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt non_trivial(); 51f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt non_trivial(const non_trivial&); 61f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt non_trivial& operator = (const non_trivial&); 71f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt ~non_trivial(); 81f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt}; 91f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt 101f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntunion bad_union { // expected-note {{marked deleted here}} 111f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt non_trivial nt; 121f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt}; 131f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntbad_union u; // expected-error {{call to deleted constructor}} 141f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntunion bad_union2 { // expected-note {{marked deleted here}} 151f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt const int i; 161f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt}; 171f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntbad_union2 u2; // expected-error {{call to deleted constructor}} 181f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt 191f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntstruct bad_anon { // expected-note {{marked deleted here}} 201f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt union { 211f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt non_trivial nt; 221f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt }; 231f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt}; 241f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntbad_anon a; // expected-error {{call to deleted constructor}} 251f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntstruct bad_anon2 { // expected-note {{marked deleted here}} 261f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt union { 271f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt const int i; 281f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt }; 291f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt}; 301f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntbad_anon2 a2; // expected-error {{call to deleted constructor}} 311f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt 321f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt// This would be great except that we implement 331f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntunion good_union { 341f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt const int i; 351f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt float f; 361f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt}; 371f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntgood_union gu; 381f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntstruct good_anon { 391f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt union { 401f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt const int i; 411f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt float f; 421f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt }; 431f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt}; 441f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntgood_anon ga; 451f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt 461f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntstruct good : non_trivial { 471f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt non_trivial nt; 481f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Hunt}; 491f2f384eb7d0ea368819fe9cc4cc20a4b337ebeaSean Huntgood g; 50