Временное продление жизни
Раздел 12.2.5 стандарта гласит:
Временная привязка к ссылочному параметру в вызове функции (5.2.2) сохраняется до завершения полного выражения, содержащего вызов. Временная привязка к возвращенному значению в операторе возврата функции (6.6.3) сохраняется до выхода из функции. Во всех этих случаях временные файлы, созданные во время вычисления выражения, инициализирующего ссылку, кроме временного, к которому привязана ссылка, уничтожаются в конце полного выражения, в котором они созданы, и в обратном порядке завершение их строительства.
Код, который я пытаюсь понять:
#include
const int& foo(const int& fooRef)
{
return fooRef;
} // #0
int main (void)
{
const int& numberRef = foo(5); // #1
std::cout < numberRef; // #2
return 0;
}