最近我偶然发现了这样的代码:
void foo(const Bar* b) {
...
takes_nonconst_param_fn((Bar*)b);
...
显然,开发人员不知道他在做什么,但如果编译器没有默默地接受 c-style-cast 并且至少需要一个正确的const_cast
,他可能会在提交之前两次。
所以这让我想到,是否有任何现代编译器有一个开关来防止const_cast
c 样式转换的语义?
阻止所有 c-style-casts 的发生根本不切实际,允许它们static_
和reinterpret_
语义(如果仅适用于某些库代码)是必要的邪恶,但我的印象是,c-style-casts 的合法使用被抛弃constness 在C++代码库中非常罕见,所以也许应该可以完全禁用它?