7

可移动转换运算符的语法是什么?

我有一个包装器obj,它有一个obj转换运算符:

class wrap {
public:
   operator obj() { ... }
private:
   obj data_;
};

如何确定是否data_应该复制或移动?

4

1 回答 1

11

它的语法是这样的:

class wrap {
public:
   operator obj() const & { ... }   //Copy from me.
   operator obj() && { ... }  //Move from me.
private:
   obj data_;
};

当无法调用第二个版本时,将调用第一个版本(即:wrap正在转换的实例不是临时的或没有显式使用std::move)。

请注意,Visual Studio 没有在 VS11 中实现 r 值引用的这一方面。

于 2012-05-25T17:17:42.637 回答