#ifndef SPROUT_UTILITY_MOVE_HPP #define SPROUT_UTILITY_MOVE_HPP #include #include namespace sprout { // // move // template inline SPROUT_CONSTEXPR typename std::remove_reference::type&& move(T&& x) SPROUT_NOEXCEPT { return static_cast::type&&>(x); } // // move_if_noexcept // template inline SPROUT_CONSTEXPR typename std::conditional< !std::is_nothrow_move_constructible::value && std::is_copy_constructible::value, T const&, T&& >::type move_if_noexcept(T& x) SPROUT_NOEXCEPT { return sprout::move(x); } } // namespace sprout #endif // #ifndef SPROUT_UTILITY_MOVE_HPP