diff gcc/testsuite/g++.dg/cpp2a/desig4.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/g++.dg/cpp2a/desig4.C	Thu Oct 25 07:37:49 2018 +0900
@@ -0,0 +1,19 @@
+// { dg-do compile }
+// { dg-options "" }
+
+struct A { int x, y; };
+struct B { int y, x; };
+void f(A a, int);          // #1
+void f(B b, ...);          // #2
+void g(A a);               // #3	{ dg-message "candidate:" }
+void g(B b);               // #4	{ dg-message "candidate:" }
+void h() {
+  f({.x = 1, .y = 2}, 0);  // OK; calls #1
+			   // { dg-warning "extended initializer lists only available with" "" { target c++98_only } .-1 }
+  f({.y = 2, .x = 1}, 0);  // error: selects #1
+			   // { dg-error "designator order for field 'A::x' does not match declaration order in 'A'" "" { target *-*-* } .-1 }
+			   // { dg-warning "extended initializer lists only available with" "" { target c++98_only } .-2 }
+  g({.x = 1, .y = 2});     // error: ambiguous between #3 and #4
+			   // { dg-error "is ambiguous" "" { target *-*-* } .-1 }
+			   // { dg-warning "extended initializer lists only available with" "" { target c++98_only } .-2 }
+}