Zwracanie tymczasowego obiektu i wiązanie do stałego odniesienia [duplikat]
Możliwy duplikat:
Czy stałe odniesienie przedłuża życie tymczasowego?
Mój kompilator nie narzeka na przypisanie tymczasowego do stałego odniesienia:
string foo() {
return string("123");
};
int main() {
const string& val = foo();
printf("%s\n", val.c_str());
return 0;
}
Czemu? Myślałem, że ta struna wróciłafoo
jest tymczasowy i val może wskazać obiekt, który zakończył się czas życia. Czy standard C ++ na to pozwala i przedłuża żywotność zwracanego obiektu?