มีวิธีการเช็คอินใน C ++ 11 ไหมถ้า enum ต่อเนื่องหรือไม่?
มันถูกต้องอย่างสมบูรณ์เพื่อให้ค่า enum ที่ไม่ได้ อาจมีคุณสมบัติเช่นลักษณะประเภทใน C ++ 14, C ++ 17 หรืออาจ C ++ 20 เพื่อตรวจสอบว่า enum เป็นแบบต่อเนื่องหรือไม่ สิ่งนี้จะใช้ใน static_assert
ตัวอย่างเล็ก ๆ ดังนี้:
enum class Types_Discontinuous {
A = 10,
B = 1,
C = 100
};
enum class Types_Continuous {
A = 0,
B = 1,
C = 2
};
static_assert(SOME_TEST<Types_Discontinuous>::value, "Enum should be continuous"); // Fails
static_assert(SOME_TEST<Types_Continuous>::value, "Enum should be continuous"); // Passes
enum
สำหรับการแสดงตนหรือมิฉะนั้นทุกค่าระหว่างพวกเขาใน น่าเศร้าที่ฉันมีงานประจำวันจึงไม่สามารถลองเขียนออกมาได้แม้ว่าฉันจะถอนคำตอบจากวิธีนี้ ฉันค่อนข้างมั่นใจว่าบางคนเช่น @barry หรือ @sehe สามารถทำได้
static_assert
) แม้ว่าคุณจะไม่สามารถสร้าง "วิธีแก้ปัญหาที่สวยงาม" ได้โปรดเขียนคำตอบต่อไปเพราะฉันอยากรู้อยากเห็นมากว่ามันสามารถทำได้ในลักษณะทั่วไป