Упростив ее, я получил следующий минимальный пример, который содержит тернарный оператор с throw в неактивной ветке:
Код: Выделить всё
constexpr int x = [] {
struct {
int vs[3];
} a{};
auto && v = (true ? a : throw 0).vs[0];
v = 1;
return a.vs[0];
}();
// x = 1 in VS2022 v17.13
// x = 0 in VS2022 v17.14.14 and VS2026 v18.0.0
Какой результат здесь правильный, если программа правильно составлена?
Подробнее здесь: https://stackoverflow.com/questions/798 ... ual-c-2026
Мобильная версия