// { dg-do compile } // Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org> // DR152: explicit copy constructors namespace N1 { struct X { X(); explicit X(const X&); }; void f(X); int foo() { X x; f(x); // { dg-error "" "" } } } namespace N2 { template <class T> struct X { X(); explicit X(const X&); }; template <class T> void f(T ) {} template <class T> int foo() { X<T> x; N2::f(x); // { dg-error "" "" } } template int foo<float>(); // { dg-error "instantiated from here" } }