
"Powell, Gary" <powellg@amazon.com> writes:
Just because I like this sort of stuff, I added a test case with 1 level of inheritence, and it works pretty well. There is a minor amount of trickiness to get the derived class to call the right base class constructor. Just need to remember to use the ref.p.
Nice. I think we'd implement a "move" function which could handle that explicitly in any real implementation: Y(ref rhs) : X( move(*rhs.p) ) // <== here , id(++cnt) , owner(rhs.p->owner) { std::cout << "MOVE #" << id << " <== #" << rhs.p->id << std::endl; rhs.p->owner = false; assert(owner); }
All in all I like it better than the MOJO soln which IMO was much more invasive.
What about the MOJO approach seems more invasive to you?
(I still like the core soln of adding && to indicate you are taking a move reference though, seems to be less error prone to code IMHO.)
Definitely. -- Dave Abrahams Boost Consulting www.boost-consulting.com