Одна вещь, это все еще возможно подорвать это. т.е. все еще законно делать что-то вроде этого:
void foo(const inst& x)
{
const_cast<int&> x = 3;
}
Вы даже можете использовать такие вещи, как memset
, чтобы подорвать его без явного const_cast
.
Это компромисс между принудительным применением const
компилятором и предоставлением некоторой гибкости для интерфейсов, не поддерживающих const
.
Что приводит к другому ограничению, заключающемуся в том, что оно не было принято повсеместно, что частично связано с другой проблемой, заключающейся в том, что использование const
является предложением "все или ничего". Если вы начнете использовать его, вам нужно будет распространить его по всей базе кода.