Move semantics for a conversion operator

人盡茶涼 提交于 2019-12-04 22:29:25

问题


What's the syntax for a movable conversion operator?

I have a wrapper that wraps around obj, which has an obj conversion operator:

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

How can I find out whether data_ should be copied or moved?


回答1:


The syntax for that would be something like this:

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

The first version will be called when the second version cannot be called (ie: the wrap instance being converted is not a temporary or there is no explicit use of std::move).

Note that Visual Studio doesn't implement this aspect of r-value references.



来源:https://stackoverflow.com/questions/10758664/move-semantics-for-a-conversion-operator

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!