アカウント名:
パスワード:
そもそも C++ には const_cast なるものがあるんだけど、それはどうするつもりなんだろうか。
ですねー。それに C++11 以降、ROM 化の保証は constexpr の役割であって、const 変数を ROM 化するのはコンパイラーの最適化の範疇と思ってました。そのため、最適化の範疇で ROM 化されるかもしれない const 変数について、const を剥がして代入するコード記述を最適化の範疇で削除されるかもしれないというのは、とてもあいまいな状況だと感じます。仕事で C++ を使い続けて 17 年くらいになりますが、解釈間違えてるのかなぁ。
実際のところ仕事で const を剥がしてそこに代入するコードを書いたことはありませんし、レビューしたこともないので、実害はないのかもしれませんけれども…。
const剥がすのはconstじゃないポインタが回り回ってconstになっちゃった時に必要なだけで、ROM化されるような大本でconstな奴からconst剥がすのは未定義動作だし少ないと思いたいが…
本件で削除されるのは後者の未定義動作だけでぶっちゃけ今までもちょくちょく削除されてた奴の事ではないかと。constじゃない変数へのポインタでconst付けて剥がしても行儀悪いだけで普通に合法な操作のはず。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
const_cast (スコア:0)
そもそも C++ には const_cast なるものがあるんだけど、
それはどうするつもりなんだろうか。
Re: (スコア:0)
ですねー。それに C++11 以降、ROM 化の保証は constexpr の役割であって、const 変数を ROM 化するのはコンパイラーの最適化の範疇と思ってました。そのため、最適化の範疇で ROM 化されるかもしれない const 変数について、const を剥がして代入するコード記述を最適化の範疇で削除されるかもしれないというのは、とてもあいまいな状況だと感じます。仕事で C++ を使い続けて 17 年くらいになりますが、解釈間違えてるのかなぁ。
実際のところ仕事で const を剥がしてそこに代入するコードを書いたことはありませんし、レビューしたこともないので、実害はないのかもしれませんけれども…。
Re:const_cast (スコア:0)
const剥がすのはconstじゃないポインタが回り回ってconstになっちゃった時に必要なだけで、
ROM化されるような大本でconstな奴からconst剥がすのは未定義動作だし少ないと思いたいが…
本件で削除されるのは後者の未定義動作だけでぶっちゃけ今までもちょくちょく削除されてた奴の事ではないかと。
constじゃない変数へのポインタでconst付けて剥がしても行儀悪いだけで普通に合法な操作のはず。