重複の可能性:
const_cast は安全ですか?
明らかに、私はこのコードを書きませんが、これは実際のプログラムで発生した非常に単純な例です。
#include <iostream>
void change(const int& data)
{
int& data2 = const_cast<int&>(data);
data2 = 100;
}
int main()
{
int thing = 123;
change(thing);
std::cout << thing << "\n";
}
const int&
これが参照されるデータを変更するのは明確に定義された動作ですか、それとも関数が渡された値を変更できず、それに応じてコードを生成できないということを渡すため、コンパイラはそれを想定できますか?
編集:私が試したすべてのコンパイラは、変更された値100を出力しました。
これはCan C++ compiler assume a const bool & value will not change?の複製のようです。ですから、これを閉じてよかったです。