¿Valor de retorno o referencia de valor?
En el nuevo libro de Scott Meyer, propone un uso de ejemplo para calificadores de referencia de valor que se parece a esto:
class Widget {
private:
DataType values;
public:
DataType& data() & { return values; }
DataType data() && { return std::move(values); } // why DataType?
};
Así que eso:
auto values = makeWidget().data();
construcciones de movimientovalues
en lugar de copiarlo.
¿Por qué rvalue-ref-qualified?data()
regresoDataType
en lugar deDataType&&
? auto
aún deduciríaDataType
en ese caso (aunquedecltype(auto)
no lo haría, pero esa no puede ser la única razón para preferir devolver un valor en lugar de una referencia de ravlue).Esta La respuesta altamente votada devuelve una referencia de valor, lo que tiene más sentido conceptual para mí.