Il discorso è un po' più sottile... il fatto che i reference siano puntatori mascherati non è strettamente richiesto, e, dato che lo standard non consente né di prendere l'indirizzo di un reference né si chiederne le dimensioni, i compilatori sono particolarmente facilitati a farli sparire appena riescono. Per dire, qualunque compilatore farà sparire immediatamente un reference locale del tipo:
codice:
int una_variabile_con_nome_lunghissimo = 2;

void test() {
    int &t = una_variabile_con_nome_lunghissimo;
    t = 2;
    ...
    std::cin>>t;
    ...
    std::cout<<t;
    ...
    t=5;
}
(anche se probabilmente farebbe la stessa cosa con un puntatore, a patto di non prenderne l'indirizzo)