移动转换运算符的语义

Can*_*hiu 7 c++ move-semantics c++11

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

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

class wrap {
public:
   operator obj() { ... }
private:
   obj data_;
};
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*las 10

该语法将是这样的:

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

当第二个版本无法调用时将调用第一个版本(即:wrap转换的实例不是临时版本或没有明确使用std::move).

请注意,Visual Studio不实现r值引用的这个方面.