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.