Um construtor de modelo substitui o construtor de cópia implícito em C ++?
Um construtor de modelo (como o seguinte) substitui o construtor de cópia implícita?
template <class T>
struct Foo
{
T data;
// ...
template <class U>
Foo(const Foo<U> &other) : data((T)doSomethingWith(other.data)) {}
// ...
};
Se sim, ainda o substitui seother
é passado por valor em vez de referência constante?
Em caso afirmativo, há alguma maneira de contornar isso sem definir explicitamente um construtor de cópia?