Por que a const em um const T & parâmetro desaparece quando T é um tipo de referência? [duplicado

Esta pergunta já tem uma resposta aqui:

Referência em colapso? 2 respostas

O código a seguir mostra que, se um modelo fazendo uma ref-to-const é instanciado com um tipo de referência (por exemplo,int&), o parâmetro não éconst:

#include <iostream>

template<typename T>
void f(const T& arg)         // arg isn't const if T is a reference type
{
  arg = -1;
}

int main()
{
  int x = 0;
  f<int&>(x);                // instantiate f with reference type
  std::cout << x << '\n';    // prints -1 under gcc, clang, and msvc
}

Oque esta acontecendo aqui

Meu palpite é que o tipo inicial dearg éint & const & e isso de alguma forma se transforma emint&. Se é assim, exatamente como isso acontece, em termos de padrão? Se não é isso que está acontecendo, o que é?

questionAnswers(2)

yourAnswerToTheQuestion