Здравствуйте, rg45, Вы писали:
R>После снятия константности с объекта "s", "i" перестал быть подобъектом константного объекта, а значит и сам перестал быть константным объектом.
Хм значит тут по ссылке фигню сказали:
https://stackoverflow.com/questions/66176720/why-introduce-stdlaunder-rather-than-have-the-compiler-take-care-of-it
Там в ответе
https://stackoverflow.com/a/66178351 — как раз похожий пример. Константное поле неконстантного объекта.
Кроме того, там есть ссылка на документ, в котором приведен пример с placement new, где есть УБ, но по факту даже кланг боится убирать лишнее чтение из памяти
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0532r0.pdf
Нет такой подлости и мерзости, на которую бы не пошёл gcc ради бессмысленных 5% скорости в никому не нужном синтетическом тесте