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.

questionAnswers(1)

yourAnswerToTheQuestion