Berikut adalah dua uji kasus untuk Perilaku Tidak Terdefinisi, dinyatakan sebagai IIFE (Segera Disebut Lambda-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() {}
Ketika dikompilasi dengan trunk GCC, test4
ditolak dengan benar karena memperlihatkan Perilaku Tidak Terdefinisi dalam a constexpr
. Di sisi lain test3
diterima.
Apakah GCC berhak menerima test3
?
4
@ formerlyknownas_463035818 Standar ini mengharuskan SEMUA UB di sebuah constexpr didiagnosis.
—
NathanOliver
@NathanOliver oh terima kasih. Itulah cara saya belajar, saya membuat kesalahan;)
—
idclev 463035818
Ya. Sepertinya bug GCC
—
NathanOliver
Saya akan melaporkannya.
—
wimalopaan