Tymczasowe przedłużenie żywotności

Sekcja standardu 12.2.5 mówi:

Tymczasowe powiązanie z parametrem odniesienia w wywołaniu funkcji (5.2.2) utrzymuje się aż do zakończenia pełnego wyrażenia zawierającego wywołanie. Tymczasowe powiązanie ze zwracaną wartością w instrukcji powrotu funkcji (6.6.3) utrzymuje się do momentu zakończenia funkcji. We wszystkich tych przypadkach tymczasowe pliki utworzone podczas oceny wyrażenia inicjującego odwołanie, z wyjątkiem tymczasowego, do którego odniesienie jest związane, są niszczone na końcu pełnego wyrażenia, w którym zostały utworzone i w odwrotnej kolejności niż zakończenie ich budowy.

Kod, który próbuję zrozumieć, to:

#include <iostream>

const int& foo(const int& fooRef)
{
    return fooRef;
}                                        // #0

int main (void)
{
    const int& numberRef = foo(5);     // #1
    std::cout << numberRef;            // #2
    return 0;
}

Online#1 tymczasowy obiekt jest tworzony i związany zfooRef parametrfoo. fooRef jest niszczony on-line#0. Pomyślałem więc, że tymczasowe powinno zostać tutaj zniszczone, ponieważ przedłużenie życia nie jest przechodnie.

Pytania:

Co robiuntil the function exits oznaczać? Czy to znaczyuntill it finished executing?

Dlaczego dostaję5 wydajność. Czy obiekt tymczasowy nadal istnieje w trybie online#2?

Jak mogę zinterpretować standardowy cytat, aby dowiedzieć się, jak działa ten przykład?

Doceniono by krok po kroku przejście atomowe z odniesieniami do standardu. Dziękuję Ci!

P. S. Przyjęta odpowiedźtutaj powiedział również, że kod jestbroken i nie rozumiem, dlaczego otrzymuję taki wynik programu.

questionAnswers(2)

yourAnswerToTheQuestion