Cita:
Iniciado por vangodp muy interesante la propuesta, aun no lo pillo lo que ha referido dhen sig(int&&) = delete;, entiendo para lo que es pero no entiendo como trabaja, como muchas otras cosas de C++. XD
En el código anterior, 4 es un
prvalue(hasta C++98) o
rvalue(C++11 en adelante). Para no aburrir con toneladas de teoría que ya están en Internet, lo resumo rápidamente.
rvalue únicamente puede ser gestionado por los siguientes constructores:
La idea es deshabilitar la opción de indexar
rvalue ya que
sig únicamente almacena un puntero y obtener una referencia de un elemento que en la instrucción siguiente ya no va a existir suena bastante peligroso.
El caso es que el primer constructor queda "tapado" por la implementación de
sig(const int&) por lo que no nos tenemos que preocupar por él. El segundo, sin embargo, toca deshabilitarlo explícitamente para evitar errores...
Como detalle adicional, la sintaxis de doble '&' se implementó en el estándar C++11 y va asociada a la semántica
move. Internet está sembrada de información acerca de dicha semántica, sus repercusiones, usos y razón de ser.
Un saludo.