forked from boostorg/smart_ptr
Use Boost.Move's move emulation and documented Constructor Forwarding technique to provide (partial) constructor forwarding on compilers that don't support r-value references. This allows constructing types taking movable-but-not-copyable types as constructor arguments. Additionally it's generally more efficient for movable-and-copyable types, but that's just a nice-to-have.