अनिर्धारित व्यवहार के लिए दो परीक्षण-मामले नीचे दिए गए हैं, जिन्हें IIFE के रूप में व्यक्त किया गया है (तुरंत कॉल किया गया लैम्ब्डा-एक्सप्रेशन):
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() {}
जब जीसीसी ट्रंक के साथ संकलित किया जाता है, तो test4
इसे सही ढंग से खारिज कर दिया जाता है क्योंकि यह एक में अपरिभाषित व्यवहार को प्रदर्शित करता हैconstexpr
। दूसरी ओर test3
स्वीकार किया जाता है।
क्या जीसीसी को स्वीकार करना सही है test3
?
4
@ पूर्व में जाना जाता है_463035818 मानक के लिए आवश्यक है कि एक कॉन्स्ट्रेक्ट में सभी यूबी का निदान किया जाए।
—
नेथनऑलिवर
@NathanOliver ओह धन्यवाद। यही कारण है कि मैं कैसे सीखता हूं, मैं गलतियां करता हूं;)
—
idclev 463035818
हां। GCC बग जैसा दिखता है
—
नाथनऑलवर
मैं इसकी रिपोर्ट करूंगा।
—
विमलोपान