Нижче наведено два тестові випадки для невизначеної поведінки, виражених як IIFE (негайно називається лямбда-Axpression):
constexpr auto test3 = []{
int* p{};
{
int x{};
p = &x;
}
return *p; // Undefined Behaviour
}(); // IIFE
constexpr auto test4 = []{
int x = std::numeric_limits<int>::min();
int y = -x; // Undefined Behaviour
return y;
}();
int main() {}
Коли компілюється з GCC-магістраллю, test4
він правильно відкидається, оскільки він демонструє не визначене поведінку в a constexpr
. З іншого боку test3
прийнято.
Чи правильно прийняти GCC test3
?
4
@ bivlyknownas_463035818 Стандарт вимагає діагностувати ВСІ UB у підказці.
—
NathanOliver
@NathanOliver о, дякую. ось як я вчуся, роблю помилки;)
—
idclev 463035818
Так. Схоже на помилку GCC
—
NathanOliver
Я повідомлю про це.
—
wimalopaan