ในขณะที่อ่านคำอธิบายเกี่ยวกับ lvalues และ rvalues บรรทัดของโค้ดเหล่านี้ติดอยู่กับฉัน:
int& foo();
foo() = 42; // OK, foo() is an lvalue
ฉันลองใช้ใน g ++ แต่คอมไพเลอร์แจ้งว่า "undefined reference to foo ()" ถ้าฉันเพิ่ม
int foo()
{
return 2;
}
int main()
{
int& foo();
foo() = 42;
}
มันรวบรวมดี แต่ใช้มันให้ความผิดส่วน เพียงแค่บรรทัด
int& foo();
โดยตัวมันเองทั้งคอมไพล์และรันโดยไม่มีปัญหาใด ๆ
รหัสนี้หมายถึงอะไร? คุณจะกำหนดค่าให้กับการเรียกใช้ฟังก์ชันได้อย่างไรและเหตุใดจึงไม่ใช่ค่า rvalue