<分区>
在Effective Modern C++ item 12中,有一段关于C++11函数引用限定符的示例代码:
class Widget {
public:
using DataType = std::vector<double>;
…
DataType& data() & // for lvalue Widgets
{ return values; } // return lvalue
DataType data() && // for rvalue Widgets
{ return std::move(values); } // return rvalue
…
private:
DataType values;
};
那么为什么第二个data()
rvalue reference overload function 返回一个temporary object DataType
而不是右值引用 DataType&&
?