1 // DR 1518 2 // { dg-do compile { target c++11 } } 3 4 struct A { 5 explicit A() = default; 6 }; 7 8 struct B : A { 9 explicit B() = default; 10 }; 11 12 struct C { 13 explicit C(); 14 }; 15 16 struct D : A { 17 C c; 18 explicit D() = default; 19 }; 20 f()21template<typename T> void f() { 22 T t = {}; // { dg-error "explicit" } 23 } g()24template<typename T> void g() { 25 void x(T t); 26 x({}); // { dg-error "explicit" } 27 } 28 main()29int main() 30 { 31 f<A>(); // { dg-message "required from here" } 32 f<B>(); // { dg-message "required from here" } 33 f<C>(); // { dg-message "required from here" } 34 f<D>(); // { dg-message "required from here" } 35 36 g<A>(); // { dg-message "required from here" } 37 g<B>(); // { dg-message "required from here" } 38 g<C>(); // { dg-message "required from here" } 39 g<D>(); // { dg-message "required from here" } 40 } 41