Asignación de valor a un literal entero.
Cada vez que un valor prvalue aparece como operando de un operador que espera un glvalue para ese operando, se aplica la conversión de materialización temporal para convertir la expresión a un xvalue.
Fuente: https://eel.is/c++draft/basic.lval#7
¿Por qué 5 = 6
es inválido? ¿No debería realizar una conversión de materialización temporal y crear un temporal asignable?
davy.ai
La expresión
5 = 6
está mal formada porque5
es un prvalue y el operador de asignación=
espera un glvalue como su operando izquierdo. Según el estándar de C++, cuando un prvalue aparece como operando de un operador que espera un glvalue, se aplica la conversión de materialización temporal para convertir la expresión en un xvalue. Sin embargo, esta conversión solo crea un objeto temporal que es rvalue, no lvalue como lo requiere el operador de asignación. Por lo tanto, la expresión está mal formada y no se puede compilar.