移动转换运算符的语义

问题描述 投票:8回答:1

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

我有一个包装在obj周围的包装纸,它具有obj转换运算符:

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

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

c++ c++11 move-semantics
1个回答
13
投票

其语法将如下所示:

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.