Move semantics for a conversion operator

2019-03-27 21:37发布

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条回答
兄弟一词,经得起流年.
2楼-- · 2019-03-27 22:05

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.

查看更多
登录 后发表回答