¿Por qué las referencias constantes extienden la vida útil de los valores?

¿Por qué el comité de C ++ decidió que las referencias constantes deberían extender la vida útil de los temporales?

Este hecho ya se ha discutido ampliamente en línea, incluido aquí en stackoverflow. El recurso definitivo que explica que este es el caso es probablemente este GoTW:

GotW # 88: un candidato para el "Const más importante"

¿Cuál fue la razón de esta característica del lenguaje? ¿Se sabe?

(La alternativa sería que la vida útil de los temporales no se extienda por ninguna referencia).

Mi propia teoría de la razón es que este comportamiento permite que los objetos oculten detalles de implementación. Con esta regla, una función miembro puede cambiar entre devolver un valor o una referencia constante a un valor ya existente internamente sin ningún cambio en el código del cliente. Por ejemplo, una clase de matriz podría ser capaz de devolver vectores de fila y vectores de columna. Para minimizar las copias, se puede devolver una u otra como referencia según la implementación (fila principal frente a columna principal). Cualquiera que no pueda devolverse por referencia debe devolverse haciendo una copia y devolviendo ese valor (si los vectores devueltos son contiguos). El escritor de la biblioteca podría querer margen de maniobra para cambiar la implementación en el futuro (mayor de fila versus mayor de columna) y evitar que los clientes escriban código que depende en gran medida de si la implementación es mayor de fila o mayor de columna. Al pedirles a los clientes que acepten valores de retorno como const ref, la clase de matriz puede devolver ya sea const refs o valores sin ningún cambio en el código del cliente. De todos modos, si se conoce el fundamento original, me gustaría saberlo.