Можно создать дубликат:
constant references with typedef and templates in c++проигрышных из 'сопзЬ' модификатором
Пожалуйста, посмотрите на следующий код:
typedef wstring& RT;
RT Change(const RT v)
{
v += L"234"; // why can I change this argument???
return v;
}
int _tmain(int argc, _TCHAR* argv[])
{
wstring str = L"111";
wstring &str2 = Change(str);
return 0;
}
Я был удивлен, что аргумент 'v' в Функция «Изменить» может быть изменена. Мы теряем модификатор const. Метафунции, такие как std :: add_const, не помогают, не могли бы вы объяснить такое поведение?
Инструмент: VS2010
Я не согласен с «точной копией». Ответ по существу тот же, но другой вопрос подразумевает, что шаблоны являются частью проблемы, когда все это сводится к типизации. По этой причине эта версия вопроса может принести больше пользы для поиска людей. –