重複の可能性:
c++ の typedef とテンプレートを使用した定数参照
次のコードを見てください。
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;
}
「Change」関数の引数「v」が変更できることに驚きました。「const」修飾子を失います。std::add_const などのメタ関数は役に立ちません。そのような動作について説明していただけますか?
ツール: VS2010