Saat membaca penjelasan tentang lvalues dan rvalues ini, baris kode berikut menarik perhatian saya:
int& foo();
foo() = 42; // OK, foo() is an lvalue
Saya mencobanya di g ++, tetapi kompilernya mengatakan "referensi tidak terdefinisi ke foo ()". Jika saya menambahkan
int foo()
{
return 2;
}
int main()
{
int& foo();
foo() = 42;
}
Ini mengkompilasi dengan baik, tetapi menjalankannya memberikan kesalahan segmentasi . Hanya garisnya
int& foo();
dengan sendirinya mengkompilasi dan berjalan tanpa masalah.
Apa arti kode ini? Bagaimana Anda bisa menetapkan nilai ke panggilan fungsi, dan mengapa itu bukan nilai r?