Os construtores variados devem esconder os gerados implicitamente?
Os construtores variados devem esconder os gerados implicitamente, ou seja, o construtor padrão e o construtor de cópia?
struct Foo
{
template<typename... Args&g,t; Foo(Args&&... x)
{
std::cout << "inside the variadic constructor\n";
}
};
int main()
{
Foo a;
Foo b(a);
}
De alguma forma, eu esperava que isso não imprimisse nada depois de leresta resposta, mas imprimeinside the variadic constructor
duas vezes no g ++ 4.5.0 :( Esse comportamento está correto?
Isso também acontece sem modelos variados:
struct Foo
{
Foo()
{
std::cout << "inside the nullary constructor\n";
}
template<typename A> Foo(A&& x)
{
std::cout << "inside the unary constructor\n";
}
};
int main()
{
Foo a;
Foo b(a);
}
Mais uma vez, ambas as linhas são impressas.