
Сообщение от
Сыроежка
Выаблуждаетесь! В противном случае весь существующий код некорректный. Вы просто путатете две вещи: первое - это то, что кто-то может писать некорректный код, и отчего никто не застрахован, и второе - соглашение об интерфейсе между программистами. Если вы следуете соглашениям об интерфейсе, то вы полагаетесь на то, что объект не будет изменен.
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
| int f( const int& a )
{
return const_cast<int&>( a ) = 123;
}
int main()
{
int a = 100;
f( a );
printf( "%d\n", a );
return 0;
} |
|
код корректен...
и здесь даже гарантировано define behavior