Por que as referências const prolongam a vida útil dos rvalues?

Por que o comitê C ++ decidiu que as referências const deveriam prolongar a vida útil dos temporários?

Esse fato já foi discutido extensivamente online, incluindo aqui no stackoverflow. O recurso definitivo que explica que esse é o caso é provavelmente este GoTW:

GotW # 88: Um candidato à “const mais importante”

Qual foi a justificativa para esse recurso de idioma? Isso é conhecido?

(A alternativa seria que o tempo de vida dos temporários não seja estendido por nenhuma referência.)

Minha própria teoria de estimação para a justificativa é que esse comportamento permite que os objetos ocultem os detalhes da implementação. Com essa regra, uma função de membro pode alternar entre retornar um valor ou uma referência const a um valor já existente internamente sem nenhuma alteração no código do cliente. Por exemplo, uma classe de matriz pode retornar vetores de linha e vetores de coluna. Para minimizar as cópias, um ou outro pode ser retornado como referência, dependendo da implementação (linha principal x coluna principal). O que não puder ser retornado por referência deve ser retornado fazendo uma cópia e retornando esse valor (se os vetores retornados forem contíguos). O gravador da biblioteca pode desejar uma margem de manobra para alterar a implementação no futuro (linha principal x coluna principal) e impedir que os clientes escrevam código que depende fortemente de se a implementação for linha principal ou coluna principal. Ao pedir aos clientes que aceitem valores de retorno como const ref, a classe matrix pode retornar const refs ou valores sem nenhuma alteração no código do cliente. Independentemente disso, se a lógica original for conhecida, eu gostaria de conhecê-la.

questionAnswers(2)

yourAnswerToTheQuestion