C ++: ¿Por qué es const_cast el mal?

Sigo escuchando esta declaración, mientras que realmente no puedo encontrar la razón por la cual const_cast es malo.

En el siguiente ejemplo:

<code>template <typename T>
void OscillatorToFieldTransformer<T>::setOscillator(const SysOscillatorBase<T> &src)
{
    oscillatorSrc = const_cast<SysOscillatorBase<T>*>(&src);
}
</code>

Estoy usando una referencia, y al usar const, estoy protegiendo mi referencia para que no se modifique. Por otro lado, si no uso const_cast, el código no se compilará. ¿Por qué const_cast sería malo aquí?

Lo mismo se aplica al siguiente ejemplo:

<code>template <typename T>
void SysSystemBase<T>::addOscillator(const SysOscillatorBase<T> &src)
{
    bool alreadyThere = 0;
    for(unsigned long i = 0; i < oscillators.size(); i++)
    {
        if(&src == oscillators[i])
        {
            alreadyThere = 1;
            break;
        }
    }
    if(!alreadyThere)
    {
        oscillators.push_back(const_cast<SysOscillatorBase<T>*>(&src));
    }
}
</code>

Por favor, dame algunos ejemplos, en los que pueda ver cómo es una mala idea / no profesional usar un const_cast.

Gracias por cualquier esfuerzo :)

Respuestas a la pregunta(9)

Su respuesta a la pregunta