Apa arti "int & foo ()" di C ++?

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...