Ao ler esta explicação sobre lvalues e rvalues, estas linhas de código ficaram grudadas em mim:
int& foo();
foo() = 42; // OK, foo() is an lvalue
Eu tentei em g ++, mas o compilador diz "referência indefinida para foo ()". Se eu adicionar
int foo()
{
return 2;
}
int main()
{
int& foo();
foo() = 42;
}
Ele compila bem, mas executá-lo causa uma falha de segmentação . Apenas a linha
int& foo();
por si só compila e executa sem problemas.
O que este código significa? Como você pode atribuir um valor a uma chamada de função e por que não é um rvalue?