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?
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.