¿Por qué no referencia no constante a objetos temporales? [duplicar]

C ++ permite la asignación de objetos temporales solo a la referencia constante. No permitirá la asignación de objetos temporales como referencia.

Por ejemplo:

String& a = String("test");         // Error
const String& a = String("test");   // Ok

En todas partes busco en Google para este resultado, solo veo las siguientes respuestas

La modificación de objetos temporales causaría problemas no identificablesModificar objetos temporales es peligrosoEn algún momento del tiempo, olvidará que es una variable temporal.

Se ha dicho, los objetos temporales desaparecen después de la declaración. Así que no debes modificarlo.

Si C ++ está tan interesado en bloquear la modificación de los objetos temporales, debería haber bloqueado la lectura de los objetos temporales, ¿no? Si el objeto temporal se desvanece, entonces no tiene sentido leer el contenido desde allí, ¿verdad? Los casos posibles, donde puede ocurrir un derecho, también podrían implicar la lectura.

¿Entonces por qué ha estado bloqueando la escritura sola y permitiendo la lectura?

Por favor, dame una explicación sólida del código c ++.

Por favor, no desvíe la pregunta señalando algunas alternativas. Por favor, dame una respuesta sólida con el código de por qué constar y está permitido y no está permitido para objetos temporales.

Uno dice que && está ahí .. Mi pregunta es diferente ... Otra cosa dice que cambiar no se reflejará ... El cambio no se reflejará incluso cuando esté constante y también. Ej .: doble a; Const int & i = a; a ++; no me afectara ..

Respuestas a la pregunta(4)

Su respuesta a la pregunta