В
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);
, которых я хочу избежать (просто полагаться на разные подписи с одним и тем же именем кажется мне немного рискованным.)