【发布时间】:2014-12-08 22:33:02
【问题描述】:
在 Scott Meyer 的新书中,他提出了一个右值引用限定符的示例用法,如下所示:
class Widget {
private:
DataType values;
public:
DataType& data() & { return values; }
DataType data() && { return std::move(values); } // why DataType?
};
这样:
auto values = makeWidget().data();
移动构造 values 而不是复制构造它。
为什么右值引用限定的data() 返回DataType 而不是DataType&&?在这种情况下,auto 仍会推断出DataType(尽管decltype(auto) 不会 - 但这不是更喜欢返回值而不是 ravlue ref 的唯一原因)。 This 高度投票的答案返回一个右值引用,这在概念上对我来说更有意义。
【问题讨论】:
-
“投票率高的答案”正确建议按值返回,再次阅读
-
@bobah 它说“您返回右值引用的情况在其他情况下是个好主意。”在提议之前
Beta_ab && getAB() && { return move(ab); }...
标签: c++ c++11 rvalue-reference