Recientemente he leído que tiene sentido al volver por el valor de una función para calificar el tipo de retorno const de tipos no incorporadas, por ejemplo:¿Cuáles son los casos de uso para tener un retorno de función por valor de const para tipo no incorporado?
const Result operation() {
//..do something..
return Result(..);
}
estoy luchando para entender los beneficios de esto, una vez que el el objeto ha sido devuelto, seguramente es la elección de quienes llaman para decidir si el objeto devuelto debe ser const?
¿Estás seguro de que marcar el valor r como const evita la semántica del movimiento? Mi versión de clang permite llamar a un constructor de movimiento personalizado con un valor de configuración (aunque no permite que una referencia de valor variable no condicional se vincule a él, así que no estoy del todo seguro de lo que está sucediendo). –
@ John Calsbeek: ¿Cómo se puede pasar de un valor constante? No puedes modificarlo, porque es const. – Puppy
@John: ¿Pero puede su constructor de const move realmente realizar el movimiento? P.ej. supongamos que tu clase tiene un puntero sin formato que debe ser liberado. En el constructor de movimientos, copie el puntero, pero también debe establecer la copia en el objeto RHS en NULL para que no se elimine por partida doble. Pero si es un valor de configuración, no puede modificarlo ... – HighCommander4