aboutsummaryrefslogtreecommitdiff
path: root/test/CXX/drs/dr16xx.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/CXX/drs/dr16xx.cpp')
-rw-r--r--test/CXX/drs/dr16xx.cpp26
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