1 // Test for initializer-list 'explicit' rule
2 // { dg-do compile { target c++11 } }
3
4 struct A
5 {
6 explicit A(int,int);
7 operator bool();
8 };
9
f(A)10 A f(A)
11 {
12 A{1,2};
13 A a1{1,2};
14 new A{1,2};
15 if (A a5{1,2});
16
17 A({1,2}); // { dg-error "explicit" }
18 A a2({1,2}); // { dg-error "explicit" }
19 A a3 = {1,2}; // { dg-error "explicit" }
20 new A({1,2}); // { dg-error "explicit" }
21 f({1,2}); // { dg-error "explicit" }
22 a1 = {1,2}; // { dg-error "explicit" }
23 if (A a4 = {1,2}); // { dg-error "explicit" }
24 return {1,2}; // { dg-error "explicit" }
25 }
26
27 struct B
28 {
29 A a;
BB30 B(): a{1,2} {}
BB31 B(const B&): a({1,2}) {} // { dg-error "explicit" }
32 };
33