lvalor a valorar conversión implícita

Veo el término "conversión lvalue a rvalue" usado en muchos lugares a lo largo del estándar C ++. Este tipo de conversión a menudo se hace implícitamente, por lo que puedo decir.

Una característica inesperada (para mí) de la redacción de la norma es que deciden tratar el valor de lvalue a rvalue como una conversión. ¿Qué pasaría si dijeran que un valor predeterminado siempre es aceptable en lugar de un valor predeterminado? ¿Tendría esa frase un significado diferente? Por ejemplo, leemos que lvalues ​​y xvalues ​​son ejemplos de glvalues. No leemos que lvalues ​​y xvalues ​​sean convertibles a glvalues. ¿Hay alguna diferencia en el significado?

Antes de mi primer encuentro con esta terminología, solía modelar lvalues ​​y rvalues ​​mentalmente más o menos como sigue: "lvalues ​​aresiempre capaz de actuar como valores, pero además puede aparecer en el lado izquierdo de un=, ya la derecha de un&".

Esto, para mí, es el comportamiento intuitivo de que si tengo un nombre de variable, entonces puedo poner ese nombre en cualquier lugar donde hubiera puesto un literal. Este modelo parece coherente con la terminología de conversiones implícitas de valor-a-valor utilizado en el estándar, siempre que se garantice que esta conversión implícita suceda.

Pero, debido a que usan esta terminología, comencé a preguntarme si la conversión implícita de valor a valor puede fallar en algunos casos. Es decir, tal vez mi modelo mental está mal aquí. Aquí hay una parte relevante de la norma: (gracias a los comentaristas).

Cada vez que aparece un valor de gl en un contexto donde se espera un valor de valor, el valor de gl se convierte en un valor de primo; véanse los puntos 4.1, 4.2 y 4.3. [Nota: un intento de enlazar una referencia de rvalor a un valor de l no es tal contexto; ver 8.5.3. - nota final]

Entiendo que lo que describen en la nota es lo siguiente:

int x = 1;
int && y = x; //in this declaration context, x won't bind to y.
// but the literal 1 would have bound, so this is one context where the implicit 
// lvalue to rvalue conversion did not happen.  
// The expression on right is an lvalue. if it had been a prvalue, it would have bound.
// Therefore, the lvalue to prvalue conversion did not happen (which is good). 

Entonces, mi pregunta es (son):

1) ¿Podría alguien aclarar los contextos donde esta conversión puede suceder implícitamente? Específicamente, aparte del contexto de vinculación a una referencia rvalue, ¿hay alguna otra en la que las conversiones lvalue-to-rvalue no ocurran implícitamente?

2) También, la paréntesis.[Note:...] en la cláusula parece que podríamos haberlo averiguado de la oración anterior. ¿Qué parte de la norma sería?

3) ¿Eso significa que el enlace rvalue-reference no es un contexto en el que esperamos una expresión prvalue (a la derecha)?

4) Al igual que otras conversiones, ¿la conversión de valor de glvalue a prvalue implica un trabajo en tiempo de ejecución que me permita observarlo?

Mi objetivo aquí no es preguntar si es deseable permitir tal conversión. Estoy tratando de aprender a explicarme a mí mismo el comportamiento de este código utilizando el estándar como punto de partida.

Una buena respuesta iría a través de la cita que coloqué arriba y explicaría (según el análisis del texto) si la nota en ella también está implícita en su texto. Entonces tal vez agregue otras citas que me permitan saber los otros contextos en los que esta conversión puede no suceder de manera implícita, o explicar que no hay más contextos de este tipo. Quizás una discusión general de por qué glvalue to prvalue se considera una conversión.