diff options
Diffstat (limited to 'test/CXX/drs/dr16xx.cpp')
-rw-r--r-- | test/CXX/drs/dr16xx.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/test/CXX/drs/dr16xx.cpp b/test/CXX/drs/dr16xx.cpp index 62040f1a130a..ddb7d16869ba 100644 --- a/test/CXX/drs/dr16xx.cpp +++ b/test/CXX/drs/dr16xx.cpp @@ -17,3 +17,29 @@ namespace dr1684 { // dr1684: 3.6 constexpr int f(NonLiteral) { return 0; } // expected-error {{not a literal type}} #endif } + +#if __cplusplus >= 201103L +namespace dr1631 { // dr1631: 3.7 c++11 + // Incorrect overload resolution for single-element initializer-list + + struct A { int a[1]; }; + struct B { B(int); }; + void f(B, int); + void f(B, int, int = 0); + void f(int, A); + + void test() { + f({0}, {{1}}); // expected-warning {{braces around scalar init}} + } + + namespace with_error { + void f(B, int); // TODO: expected- note {{candidate function}} + void f(int, A); // expected-note {{candidate function}} + void f(int, A, int = 0); // expected-note {{candidate function}} + + void test() { + f({0}, {{1}}); // expected-error{{call to 'f' is ambiguous}} + } + } +} // dr1631 +#endif |