1
ทำไมฟังก์ชั่น consteval ถึงมีพฤติกรรมที่ไม่ได้กำหนดไว้?
มีคุณสมบัติที่เป็นระเบียบมากของนิพจน์คงที่ใน C ++: การประเมินของพวกเขาไม่สามารถมีพฤติกรรมที่ไม่ได้กำหนด ( 7.7.4.7 ): นิพจน์ e เป็นนิพจน์ค่าคงที่หลักเว้นแต่ว่าการประเมิน e ตามกฎของเครื่องนามธรรม ([intro.execution]) จะประเมินข้อใดข้อหนึ่งต่อไปนี้: ... การดำเนินการที่จะมีพฤติกรรมที่ไม่ได้กำหนดตามที่ระบุไว้ใน [บทนำ] ถึง [cpp] ของเอกสารนี้ [หมายเหตุ: รวมถึงตัวอย่างเช่นจำนวนเต็มล้นลงนาม ([expr.prop]) บางตัวชี้ทางคณิตศาสตร์ ([expr.add]) การหารด้วยศูนย์หรือการเลื่อนบางอย่าง - หมายเหตุท้าย]; การพยายามเก็บค่าของ13!ในข้อผิดพลาดconstexpr intจริงทำให้คอมไพล์คอมไพล์ดี : constexpr int f(int n) { int r = n--; for (; n > 1; --n) r *= n; return …