Extensão vitalícia e o operador condicional

referências locais de lvalue para const e rvalue podem prolongar o tempo de vida de temporários:

const std::string& a = std::string("hello");
std::string&& b = std::string("world");

Isso também funciona quando o inicializador não é uma expressão simples, mas usa o operador condicional?

std::string&& c = condition ? std::string("hello") : std::string("world");

E se um dos resultados for um objeto temporário, mas o outro não for?

std::string d = "hello";
const std::string& e = condition ? d : std::string("world");

O C ++ exige que o tempo de vida do temporário seja estendido quando a condição é falsa?

A questão surgiu ao responderessa questão sobre objetos não copiáveis.

questionAnswers(2)

yourAnswerToTheQuestion