2
ไวยากรณ์ที่ถูกต้องของการเรียกใช้ pseudo-destructor สำหรับค่าคงที่แบบลอยตัว
พิจารณาโปรแกรมสาธิตต่อไปนี้ #include <iostream> int main() { typedef float T; 0.f.T::~T(); } Microsoft Visual Studio Community 2019โปรแกรมนี้เป็นโปรแกรมที่รวบรวมโดย แต่clangและgccออกข้อผิดพลาดเช่นนี้ prog.cc:7:5: error: unable to find numeric literal operator 'operator""f.T' 7 | 0.f.T::~T(); | ^~~~~ หากต้องการเขียนนิพจน์เช่น( 0.f ).T::~T()นั้นคอมไพเลอร์ทั้งสามจะคอมไพล์โปรแกรม ดังนั้นคำถามที่เกิดขึ้น: บันทึกนี้0.f.T::~T()ถูกต้องตามหลักไวยากรณ์หรือไม่ และถ้าไม่เช่นนั้นกฎเกี่ยวกับวากยสัมพันธ์คืออะไร?