Re[104]: Когда это наконец станет defined behavior?
От: vdimas Россия  
Дата: 22.08.23 10:29
Оценка:
Здравствуйте, vopl, Вы писали:

V>>До С++17 некоторые компиляторы падают во время исполнения, некоторые выдают мусор. ))

V>Эта суть понятна в полной мере.

Вывод был
0, 1
1, 2


Хотя компилятор мог бы закешировать значения index в регистрах или вообще расположить экземпляры объектов в регистрах, ведь их размер это позволяет.
Т.е., программа могла выдать и
0, 1
1, 2

и
0, 0
0, 0

и просто упасть, если бы компилятор "не обратил внимание" на протекающий this.


V>По прежнему имею мнение что сабжевый "гипотетический UB" имеет такую же природу, но несколько другой механизм активации


Сабжевый ваш UB другой, имеет природу недоинициализированных глобальных переменных в динамической фазе инициализации.
Это очень старый UB, который живёт с самых первых версий С++, когда о RVO еще не слышали. ))

Этот ваш UB легко воспроизводим и без константности.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.