std::is_move_constructible<T> does not guarantee that T has a move constructor
Because a copy constructor in the form
T(const T&) will also bind to an rvalue argument, thus satisfying
is_move_constructible<T> without requiring the existence of a move constructor
Obviously the same applies to the
_nothrow_ variants, and a similar limitation applies to
is_move_assignable (doesn't guarantee that the type has a move assignment operator) and to its variants.
In ndn-cxx we currently use these type traits paired with
Buffer, but as explained above this is not sufficient to ensure that they have a move constructor or a move assignment operator.