// DR 1518 // { dg-do compile { target c++11 } } struct A { explicit A() = default; }; struct B : A { explicit B() = default; }; struct C { explicit C(); }; struct D : A { C c; explicit D() = default; }; template void f() { T t = {}; // { dg-error "explicit" } } template void g() { void x(T t); x({}); // { dg-error "explicit" } } int main() { f(); // { dg-message "required from here" } f(); // { dg-message "required from here" } f(); // { dg-message "required from here" } f(); // { dg-message "required from here" } g(); // { dg-message "required from here" } g(); // { dg-message "required from here" } g(); // { dg-message "required from here" } g(); // { dg-message "required from here" } }