Информация об изменениях

Сообщение Re[15]: Когда это наконец станет defined behavior? от 04.05.2023 15:20

Изменено 04.05.2023 15:33 rg45

Re[15]: Когда это наконец станет defined behavior?
Здравствуйте, B0FEE664, Вы писали:

R>> Константностью ссылок невозможно доказать константность объекта.

BFE>Можно, так как неконстантная ссылка не может быть автоматически создана на константный объект.
BFE>Но зачем так сложно?
BFE>Вот это, естественно, не скомпилируется:
BFE>
BFE>struct S { const int i; };
BFE>S x{2};
BFE>x.i = 3;
BFE>

BFE>Чем не доказательство, что x.i — константный подобъект?

По этой логике, следующий фрагмент тоже можно пытаться выдать за доказательство константности:

int i;
const int& r = i;
r = 3;


Ссылка на константный объект! А объект-то нифига не константный. Короче, фигня это все, а не доказательства.

Если тебе так уже приспичило что-то доказвать, то докажи, что пример ниже порождает неопределенное поведение, и обоснуй ссылками на стандарт:

struct S { const int i; };
S x{2};
const_cast<int&>(x.i) = 3;
Re[15]: Когда это наконец станет defined behavior?
Здравствуйте, B0FEE664, Вы писали:

R>> Константностью ссылок невозможно доказать константность объекта.

BFE>Можно, так как неконстантная ссылка не может быть автоматически создана на константный объект.
BFE>Но зачем так сложно?
BFE>Вот это, естественно, не скомпилируется:
BFE>
BFE>struct S { const int i; };
BFE>S x{2};
BFE>x.i = 3;
BFE>

BFE>Чем не доказательство, что x.i — константный подобъект?

По этой логике, следующий фрагмент тоже можно пытаться выдать за доказательство константности объекта — это тоже не скомпилируется:

int i;
const int& r = i;
r = 3;


Ссылка на константный объект! А объект-то нифига не константный. Короче, фигня это все, а не доказательства.

Если тебе так уже приспичило что-то доказвать, то докажи, что пример ниже порождает неопределенное поведение, и обоснуй ссылками на стандарт:

struct S { const int i; };
S x{2};
const_cast<int&>(x.i) = 3;