boost::has_nothrow_move
// In header: <boost/move/traits.hpp> template<typename T> struct has_nothrow_move { // public data members static const bool value; };
boost::is_nothrow_move_constructible<T>::value && boost::is_nothrow_move_assignable<T>::value