Recently I stumbled over code such as this:
void foo(const Bar* b) {
...
takes_nonconst_param_fn((Bar*)b);
...
Obviously, the developer didn't know what he was doing, but if the compiler hadn't silently accepted the c-style-cast and at least required a proper const_cast
, he may have though twice before committing this.
So this got me thinking, do any modern compilers have a switch to prevent const_cast
semantics for c-style-casts?
It's simply not practical to prevent all occurrences of c-style-casts and it's a necessary evil to allow their static_
and reinterpret_
semantics (if only for some library code), but my impression is, that legitimate usage of c-style-casts to cast away constness is very rare in C++ code bases, so maybe it should be possible to disable it altogether?
foo
is a member function, then that would make the object membersconst
within the function; if not, then that would be an error. – Amitystatic_cast
form. – Priddy