diff options
author | dim <dim@FreeBSD.org> | 2013-12-22 00:07:40 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2013-12-22 00:07:40 +0000 |
commit | 952eddef9aff85b1e92626e89baaf7a360e2ac85 (patch) | |
tree | df8df0b0067b381eab470a3b8f28d14a552a6340 /test/SemaCXX/cxx0x-initializer-references.cpp | |
parent | ea266cad53e3d49771fa38103913d3ec7a166694 (diff) | |
download | FreeBSD-src-952eddef9aff85b1e92626e89baaf7a360e2ac85.zip FreeBSD-src-952eddef9aff85b1e92626e89baaf7a360e2ac85.tar.gz |
Vendor import of clang release_34 branch r197841 (effectively, 3.4 RC3):
https://llvm.org/svn/llvm-project/cfe/branches/release_34@197841
Diffstat (limited to 'test/SemaCXX/cxx0x-initializer-references.cpp')
-rw-r--r-- | test/SemaCXX/cxx0x-initializer-references.cpp | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/test/SemaCXX/cxx0x-initializer-references.cpp b/test/SemaCXX/cxx0x-initializer-references.cpp index 283c32a..9096c8a 100644 --- a/test/SemaCXX/cxx0x-initializer-references.cpp +++ b/test/SemaCXX/cxx0x-initializer-references.cpp @@ -36,10 +36,10 @@ namespace reference { }; void call() { - void f(const int&); + one f(const int&); f({1}); - void g(int&); // expected-note {{passing argument}} + one g(int&); // expected-note {{passing argument}} g({1}); // expected-error {{cannot bind to an initializer list temporary}} int i = 0; g({i}); @@ -97,3 +97,24 @@ namespace b7891773 { int g(const ptr &); int k = g({ f<int> }); } + +namespace inner_init { + struct A { int n; }; + struct B { A &&r; }; + B b1 { 0 }; // expected-error {{reference to type 'inner_init::A' could not bind to an rvalue of type 'int'}} + B b2 { { 0 } }; + B b3 { { { 0 } } }; // expected-warning {{braces around scalar init}} + + struct C { C(int); }; + struct D { C &&r; }; + D d1 { 0 }; // ok, 0 implicitly converts to C + D d2 { { 0 } }; // ok, { 0 } calls C(0) + D d3 { { { 0 } } }; // ok, { { 0 } } calls C({ 0 }) + D d4 { { { { 0 } } } }; // expected-warning {{braces around scalar init}} + + struct E { explicit E(int); }; // expected-note 2{{here}} + struct F { E &&r; }; + F f1 { 0 }; // expected-error {{could not bind to an rvalue of type 'int'}} + F f2 { { 0 } }; // expected-error {{chosen constructor is explicit}} + F f3 { { { 0 } } }; // expected-error {{chosen constructor is explicit}} +} |