アカウント名:
パスワード:
そもそも C++ には const_cast なるものがあるんだけど、それはどうするつもりなんだろうか。
const_castは参照型やポインタ型についたconstを外せるだけで、タレコミにあるような「『const』キーワード付きで宣言された変数」、例えば
const int i = 1;
みたいなのはどうキャストしても値をいじれないんじゃないかな。実際にiへのポインタや参照ををconst_castしたら、値がコピーされた別のオブジェクトが生じて、iの値は1のままだと思う。
int main() { const int foo = 1; int* bar = const_cast<int*>(&foo); (*bar)++; return foo + (*bar); //foo:1、(*bar):2なので戻り値は3}
実際にiへのポインタや参照ををconst_castしたら、値がコピーされた別のオブジェクトが生じて、iの値は1のままだと思う。
そうしているものが多いだろうけど、仕様としてそう定められていないなら「*barも1のまま」とする処理系もありうるぞ、という話だと思うんだけど。
「*barも1のまま」
https://godbolt.org/z/7mvtpb [godbolt.org]
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日々是ハック也 -- あるハードコアバイナリアン
const_cast (スコア:0)
そもそも C++ には const_cast なるものがあるんだけど、
それはどうするつもりなんだろうか。
Re:const_cast (スコア:0)
const_castは参照型やポインタ型についたconstを外せるだけで、タレコミにあるような「『const』キーワード付きで宣言された変数」、例えば
みたいなのはどうキャストしても値をいじれないんじゃないかな。実際にiへのポインタや参照ををconst_castしたら、値がコピーされた別のオブジェクトが生じて、iの値は1のままだと思う。
Re: (スコア:0)
実際にiへのポインタや参照ををconst_castしたら、値がコピーされた別のオブジェクトが生じて、iの値は1のままだと思う。
そうしているものが多いだろうけど、仕様としてそう定められていないなら「*barも1のまま」とする処理系もありうるぞ、という話だと思うんだけど。
Re: (スコア:0)
「*barも1のまま」
https://godbolt.org/z/7mvtpb [godbolt.org]