| // Test for initializer-list 'explicit' rule |
| // { dg-do compile { target c++11 } } |
| |
| struct A |
| { |
| explicit A(int,int); |
| operator bool(); |
| }; |
| |
| A f(A) |
| { |
| A{1,2}; |
| A a1{1,2}; |
| new A{1,2}; |
| if (A a5{1,2}); |
| |
| A({1,2}); // { dg-error "explicit" } |
| A a2({1,2}); // { dg-error "explicit" } |
| A a3 = {1,2}; // { dg-error "explicit" } |
| new A({1,2}); // { dg-error "explicit" } |
| f({1,2}); // { dg-error "explicit" } |
| a1 = {1,2}; // { dg-error "explicit" } |
| if (A a4 = {1,2}); // { dg-error "explicit" } |
| return {1,2}; // { dg-error "explicit" } |
| } |
| |
| struct B |
| { |
| A a; |
| B(): a{1,2} {} |
| B(const B&): a({1,2}) {} // { dg-error "explicit" } |
| }; |