最近、私は次のようなコードに出くわしました。
void foo(const Bar* b) {
...
takes_nonconst_param_fn((Bar*)b);
...
明らかに、開発者は自分が何をしているのかわかりませんでしたが、コンパイラがc-style-castを黙って受け入れず、少なくとも適切なものが必要なconst_cast
場合は、これをコミットする前に2回も必要だった可能性があります。
それで、これは私に考えさせられました、現代のコンパイラーはconst_cast
c-style-castsのセマンティクスを防ぐためのスイッチを持っていますか?
static_
c-style-castのすべての発生を防ぐことは単純に実用的ではなく、それらとセマンティクスを許可することは必要な悪reinterpret_
です(一部のライブラリコードの場合のみ)が、私の印象では、c-style-castの合法的な使用は捨て去られますconstnessはC++コードベースでは非常にまれなので、完全に無効にすることは可能でしょうか?