const_cast
can be used in order remove or add constness to an object. This can be useful when you want to call a specific overload.
Contrived example:
class foo {
int i;
public:
foo(int i) : i(i) { }
int bar() const {
return i;
}
int bar() { // not const
i++;
return const_cast<const foo*>(this)->bar();
}
};