В
template <typename T>
T const & foo(T const & dflt)
{ return /* ... */ ? /* ... */ : dflt; }
int x = foo(5);
Указывает ли ссылка на временную "выживать" до тех пор, пока она не будет назначена на x?
(Я знаю, что он выживает при длительности вызова foo(), но задание заставляет меня колебаться)
Этот код имеет некоторые законные способы использования ссылок на ссылки здесь, то есть мне нужны две отдельные функции
T const & foo_cr(T const & dflt);
T const & foo_v(T dflt);
который я хочу избежать (просто полагаться на разные подписи с одним и тем же именем кажется мне немного рискованным).