локальные ссылки ссылок на ссылки и константы rvalue могут продлить время жизни временных файлов:
const std::string& a = std::string("hello");
std::string&& b = std::string("world");
Это также работает, когда инициализатор не является простым выражением, но использует условный оператор?
std::string&& c = condition ? std::string("hello") : std::string("world");
Что делать, если один из результатов является временным объектом, а другой - не?
std::string d = "hello";
const std::string& e = condition ? d : std::string("world");
Предоставляет ли С++ срок жизни временного расширения, когда условие является ложным?
Вопрос возник при ответе этого вопроса о не скопируемых объектах.