Продолжительность жизни и условный оператор

локальные ссылки на lvalue-to-const и 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");

Обязывает ли C ++ время жизни временного объекта продлевать, когда условие ложно?

Вопрос возник при ответеэтот вопрос о не копируемых объектах.

Ответы на вопрос(2)

Ваш ответ на вопрос