Почему исчезает const в параметре const T &, когда T является ссылочным типом? [Дубликат]

На этот вопрос уже есть ответ:

Ссылка рушится? 2 ответа

Следующий код показывает, что если шаблон принимаconstараметр @ создается с ссылочным типом (например,int&), параметр не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
}

Что тут происходит

Я думаю, что начальный типarg являетсяint & const & и что это как-то превращается вint&. Если это так, то как именно это происходит с точки зрения стандарта? Если это не то, что происходит, то что?

Ответы на вопрос(2)

Ваш ответ на вопрос