O que é uma referência constante? (não é uma referência a uma constante)

Uma pergunta bastante teórica ... Por que referências constantes não se comportam da mesma maneira que ponteiros constantes e eu posso realmente alterar o objeto para o qual estão apontando? Eles realmente parecem outra declaração simples de variável. Por que eu os usaria? Este é um pequeno exemplo que eu executo, que compila e executa sem erros:

int main (){
    int i=0;
    int y=1;    
    int&const icr=i;
    icr=y;          // Can change the object it is pointing to so it's not like a const pointer...
    icr=99;         // Can assign another value but the value is not assigned to y...
    int x=9;
    icr=x;
    cout<<"icr: "<<icr<<", y:"<<y<<endl; 
}

questionAnswers(7)

yourAnswerToTheQuestion