Passando int && para f (int &&)

O que exatamente está acontecendo aqui? Por que isso é um erro?

void f(int &&);

int && i = 5;

f(i);

Não é um pouco contra-intuitivo?

eu esperariai para ser uma referência rvalue e, portanto, poder passá-la paraf(). Mas eu recebo um erro;

nenhuma conversão conhecida deint paraint &&

Então eu achoi não é uma referência rvalue após a declaração?