¿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í.

Respuestas a la pregunta(2)

Su respuesta a la pregunta