Originariamente inviato da GliderKite
Mi fai un esempio in cui questo:

codice:
value = oggetto[ i ]
Si traduce nella chiamata alla versione rvalue?
Sicuramente in questo caso:
codice:
void UnaFunzione(const CLASSE<int> & oggetto)
{
    int unIntero=oggetto[i];
}
Per inciso, secondo me stai usando la terminologia rvalue/lvalue in maniera erronea, il fatto che un metodo sia const e che restituisca rvalue o lvalue sono due caratteristiche ortogonali (ad esempio, un riferimento const che può restituire la versione const è un const lvalue).
Non ha senso se consideri unicamente l'aspetto pratico, ovvio che la copia che muore non ha la benchè minima importanza. Ma il principio del minor privilegio si applica spesso e volentieri anche in questi casi, l'informazzione aggiuntiva della non-modificabilità della variabile è resa più evidente da const, e non fa che migliorare la leggibilità del codice.
Boh, semplicemente non avevo mai visto specificare il const su un parametro POD passato per copia né ne avevo mai sentito la necessità; comunque, male non fa, quindi non sarò certo io a dirti di toglierlo.