Temporäres Objekt zurückgeben und an konstante Referenz binden [duplizieren]

Mögliche Duplikate:
Verlängert eine konstante Referenz die Lebensdauer eines Provisoriums?

Mein Compiler beschwert sich nicht über die temporäre Zuweisung einer const-Referenz:

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

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

Warum? Ich dachte, die Saite käme von zurückfoo ist temporär und val kann auf ein Objekt verweisen, dessen Lebensdauer abgelaufen ist. Lässt dies der C ++ - Standard zu und verlängert er die Lebensdauer des zurückgegebenen Objekts?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage