Retornando objeto temporário e ligação à referência const [duplicata]

Duplicata Possível:
Uma referência const prolonga a vida de um temporário?

Meu compilador não reclama sobre a atribuição temporária à referência const:

string foo() {
  return string("123");
};

int main() {
  const string& val = foo();
  printf("%s\n", val.c_str());
  return 0;
}

Por quê? Eu pensei que a corda retornoufoo é temporário e val pode apontar para o objeto que a vida útil acabou. O padrão C ++ permite isso e prolonga a vida útil do objeto retornado?

questionAnswers(1)

yourAnswerToTheQuestion