ExceptionsCasting 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 } ![]() |