39 lines
812 B
C
39 lines
812 B
C
// { dg-do compile }
|
|
// Origin: Giovanni Bajo <giovannibajo at gcc dot gnu dot org>
|
|
// DR152: explicit copy constructors
|
|
|
|
namespace N1 {
|
|
struct X {
|
|
X(); // { dg-message "candidate" }
|
|
explicit X(const X&);
|
|
};
|
|
void f(X);
|
|
int foo()
|
|
{
|
|
X x;
|
|
f(x); // { dg-error "matching" "matching" }
|
|
// { dg-error "initializing" "initializing" { target *-*-* } 14 }
|
|
}
|
|
}
|
|
|
|
namespace N2 {
|
|
template <class T>
|
|
struct X {
|
|
X(); // { dg-message "candidate" }
|
|
explicit X(const X&);
|
|
};
|
|
|
|
template <class T>
|
|
void f(T ) {}
|
|
|
|
template <class T>
|
|
int foo()
|
|
{
|
|
X<T> x;
|
|
N2::f(x); // { dg-error "matching" "matching" }
|
|
// { dg-error "initializing " initializing" { target *-*-* } 33 }
|
|
}
|
|
|
|
template int foo<float>(); // { dg-message "instantiated from here" }
|
|
}
|