วิ่งเข้าไปหาสิ่งที่แปลกประหลาดเมื่อทำเทมเพลต metaprogramming บางวัน โดยพื้นฐานแล้วมาจากการยืนยันนี้ไม่ผ่าน (อย่างที่ฉันคาดหวัง)
static_assert(std::is_same_v<void(), std::remove_reference_t<void()&>>);
ตอนแรกฉันคิดว่าฉันทำผิดพลาดทางไวยากรณ์ที่กำหนดฟังก์ชันอ้างอิง แต่การยืนยันนี้ผ่านไปโดยแสดงว่าไม่เป็นเช่นนั้น
static_assert(std::is_same_v<void()&, void()&>);
ฉันยังลองใช้remove_reference
ตัวเองเพื่อคัดลอกแหล่งที่มาจาก cppreference แต่ก็ไม่ได้ผลเช่นกัน เกิดขึ้นที่นี่คืออะไร?