Move semantics for a conversion operator

c++, c++11, move-semantics

Solution

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 didn't implement this aspect of r-value references in VS11.

Problem

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?

Original source

Related problems