Due to limitations in the emulation code, a cast to Base& is needed before moving the
base part in the move constructor and call Base's move constructor instead
of the copy constructor.

Each subobject will now be treated individually, calling move to bind to the
subobject's move constructors and move assignment operators. Member has move operations coded (just like
our earlier clone_ptr example)
which will completely avoid the tremendously more expensive copy operations:

Derivedd;Derivedd2(boost::move(d));d2=boost::move(d);

Note above that the argument x is treated as a lvalue reference. That's why
it is necessary to say move(x)
instead of just x when passing down to the base class. This is a key safety
feature of move semantics designed to prevent accidently moving twice from
some named variable. All moves from lvalues occur explicitly.