Exceptions
Casting away const can be necessary to call const-incorrect APIs (see Item 15). It is also useful when a function that must take and return the same kind of reference has const and non-const overloads, implemented by having one call the other:const Object& f( const Object& );
Object& f( Object& obj ) {
const Object& ref = obj;
return const_cast<Object&>( foo(ref) ) ; // have to const_cast the return type
}