The const_cast operator takes the form:
const_cast<T> (expr)
It is used to add or remove the ``const-ness'' or ``volatile-ness'' from a type. Consider a function, f, which takes a non-const argument:
double f( double& d );
Say you wish to call f from another function g:
void g (const double& d)
{
val = f(d);
}
Because d is const and should not be modified, the compiler will complain because f may potentially modify its value. To get around this dilemma, use a const_cast:
void g (const double& d)
{
val = f(const_cast<double&>(d));
}
This strips away the ``const-ness'' of d before passing it to f. You cannot use const_cast for any other types of casts, such as casting a base class pointer to a derived class pointer. If you do so, the compiler will report an error.