diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-07-07 08:35:56 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2012-07-07 08:35:56 +0000 |
commit | e20c83d9ede057602e78c482e644a3d44a966f36 (patch) | |
tree | 9c1259476ea5f128132f8c47606d079cf9fb6d37 /clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp | |
parent | 4ff9ff974cc1944cc5f38c2c808938a29f235d60 (diff) | |
download | bcm5719-llvm-e20c83d9ede057602e78c482e644a3d44a966f36.tar.gz bcm5719-llvm-e20c83d9ede057602e78c482e644a3d44a966f36.zip |
PR12670: Support for initializing an array of non-aggregate class type from an
initializer list. Patch by Olivier Goffart, with extra testcases by Meador Inge
and Daniel Lunow.
llvm-svn: 159896
Diffstat (limited to 'clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp')
-rw-r--r-- | clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp b/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp index 801a82f5706..c83058a5e19 100644 --- a/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp +++ b/clang/test/SemaCXX/cxx0x-initializer-aggregates.cpp @@ -87,3 +87,32 @@ namespace array_explicit_conversion { (void)test4{{{1}}}; // expected-note {{in instantiation of template class 'array_explicit_conversion::A<-1>' requested here}} } } + +namespace sub_constructor { + struct DefaultConstructor { // expected-note 2 {{not viable}} + DefaultConstructor(); // expected-note {{not viable}} + int x; + }; + struct NoDefaultConstructor1 { // expected-note 2 {{not viable}} + NoDefaultConstructor1(int); // expected-note {{not viable}} + int x; + }; + struct NoDefaultConstructor2 { // expected-note 4 {{not viable}} + NoDefaultConstructor2(int,int); // expected-note 2 {{not viable}} + int x; + }; + + struct Aggr { + DefaultConstructor a; + NoDefaultConstructor1 b; + NoDefaultConstructor2 c; + }; + + Aggr ok1 { {}, {0} , {0,0} }; + Aggr ok2 = { {}, {0} , {0,0} }; + Aggr too_many { {0} , {0} , {0,0} }; // expected-error {{no matching constructor for initialization}} + Aggr too_few { {} , {0} , {0} }; // expected-error {{no matching constructor for initialization}} + Aggr invalid { {} , {&ok1} , {0,0} }; // expected-error {{no matching constructor for initialization}} + NoDefaultConstructor2 array_ok[] = { {0,0} , {0,1} }; + NoDefaultConstructor2 array_error[] = { {0,0} , {0} }; // expected-error {{no matching constructor for initialization}} +}
\ No newline at end of file |