Pasar int && a f (int &&)

¿Qué está pasando exactamente aquí? ¿Por qué es esto un error?

void f(int &&);

int && i = 5;

f(i);

¿No es un poco contradictorio?

Yo esperaríai para ser una referencia de valor y poder pasarla af(). Pero me sale un error;

sin conversión conocida deint aint &&

Así que supongoi ¿No es una referencia de valor después de la declaración?