Dưới đây là hai trường hợp thử nghiệm cho Hành vi không xác định, được biểu thị là IIFE (Được gọi ngay lập tức Lambda-A े ion):
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() {}
Khi được biên dịch với thân GCC, test4
bị từ chối chính xác vì nó thể hiện Hành vi không xác định trong mộtconstexpr
. Mặt khác test3
được chấp nhận.
GCC có quyền chấp nhận test3
không?
4
@ trước đây là Unknown_463035818 Tiêu chuẩn yêu cầu TẤT CẢ UB trong một constexpr được chẩn đoán.
—
NathanOliver
@NathanOliver cảm ơn. đó là cách tôi học, tôi mắc lỗi;)
—
idclev 463035818
Vâng. Trông giống như một lỗi GCC
—
NathanOliver
Tôi sẽ báo cáo nó.
—
wimalopaan