Sintaxis para referencias universales.

Esta es una referencia de valor:

void foo(int&& a);

No se une a los valores:

int i = 42;
foo(i);   // error

Esta es una referencia universal:

template<typename T>
void bar(T&& b);

Se une a los valores y también se une a los valores de l:

bar(i);   // okay

Esta es una referencia de valor:

template<typename T>
struct X
{
    void baz(T&& c);
};

No se une a los valores:

X<int> x;
x.baz(i);   // error

¿Por qué las referencias universales utilizan la misma sintaxis que las referencias de valor? ¿No es eso una fuente innecesaria de confusión? ¿Alguna vez el comité consideró sintaxis alternativas comoT&&&, T&*, T@ oT&42 (sólo bromeo en el último)? Si es así, ¿cuáles fueron las razones para rechazar sintaxis alternativas?

Respuestas a la pregunta(2)

Su respuesta a la pregunta