Re[11]: Когда это наконец станет defined behavior?
От: rg45 СССР  
Дата: 04.05.23 08:24
Оценка: -1 :)
Здравствуйте, T4r4sB, Вы писали:

TB>Хаха убираем const в строке 8 и даже продвинутый кланг забоялся делать предположения о КОНСТантном поле структуры


И где тут "хаха"? Читай определение, что такое const object:

https://timsong-cpp.github.io/cppwp/basic.type.qualifier#1.1
https://timsong-cpp.github.io/cppwp/basic.type.qualifier#2

A const object is an object of type const T or a non-mutable subobject of a const object.

Except for array types, a compound type ([basic.compound]) is not cv-qualified by the cv-qualifiers (if any) of the types from which it is compounded.




После снятия константности с объекта "s", "i" перестал быть подобъектом константного объекта, а значит и сам перестал быть константным объектом. Следовательно и пункт, в котором декларируется неопределенное поведение, с этого момента на "i" не распространяется:

https://timsong-cpp.github.io/cppwp/dcl.type.cv#4

Any attempt to modify ([expr.ass], [expr.post.incr], [expr.pre.incr]) a const object (basic.type.qualifier) during its lifetime ([basic.life]) results in undefined behavior.

--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 04.05.2023 8:34 rg45 . Предыдущая версия . Еще …
Отредактировано 04.05.2023 8:25 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.