una todas tipos sirve que programacion para llamar las funciones funcion estructura ejemplos ejemplo como c++ c++14 language-lawyer rvalue-reference decltype

tipos - todas las funciones de c++



¿Por qué se enlaza esta referencia de valor a un valor de l? (1)

Según [dcl.spec.auto]/5 , el tipo de devolución se deduce como si el operando de la declaración de return fuera el operando de decltype . Y [dcl.type.simple]/(4.2) establece claramente que, como el operando no está entre paréntesis, el tipo de entidad es el tipo decltype por decltype , es decir, int&& . Y de hecho, r es un lvalue ( [expr.prim.id.unqual] ).

Afortunadamente, esto ha sido descubierto y archivado como error 64892 hace dos años. (Me pregunto por qué nadie pudo encontrar el tiempo para arreglar esto?)

No entiendo por qué el siguiente código se compila en GCC 8.0:

decltype(auto) foo(int&& r) { return r; }

En foo , el tipo de declaración de r es int&& , por lo que el tipo de devolución de foo también es int&& . Pero r sí es un lvalue, y un lvalue no puede vincularse a una referencia rvalue.

¿Me estoy perdiendo de algo?