Возвращаемое значение или ссылка на значение?
В новой книге Скотта Мейера он предлагает пример использования ссылочных квалификаторов rvalue, который выглядит примерно так:
class Widget {
private:
DataType values;
public:
DataType& data() & { return values; }
DataType data() && { return std::move(values); } // why DataType?
};
Чтобы:
auto values = makeWidget().data();
двигаться-конструкцииvalues
вместо того, чтобы копировать его.
Почему rvalue-ref-qualifieddata()
вернутьDataType
вместоDataType&&
? auto
все равно выведетDataType
в этом случае (хотяdecltype(auto)
не будет - но это не может быть единственной причиной, чтобы предпочесть вернуть значение вместо ravlue ref).это Ответ с высоким рейтингом возвращает ссылку на R-значение, что имеет больше смысла концептуально для меня.