2
สร้างข้อยกเว้นมาตรฐานด้วยอาร์กิวเมนต์ตัวชี้โมฆะและ postconditions ที่เป็นไปไม่ได้
พิจารณาโปรแกรมต่อไปนี้: #include<stdexcept> #include<iostream> int main() { try { throw std::range_error(nullptr); } catch(const std::range_error&) { std::cout << "Caught!\n"; } } GCC และ Clang ด้วยการโทร libstdc ++ std::terminateและยกเลิกโปรแกรมด้วยข้อความ terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid เสียงดังกราวกับ libc ++ segfaults ในการสร้างข้อยกเว้น ดูgodbolt คอมไพเลอร์ทำงานตามมาตรฐานหรือไม่ ส่วนที่เกี่ยวข้องของมาตรฐาน[diagnostics.range.error] (C ++ 17 …