1 template<typename _Tp> 2 constexpr typename remove_reference<_Tp>::type&& 3 move(_Tp&& __t) noexcept; 4 5 template<typename _Tp> 6 constexpr inline 7 typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, 8 is_move_constructible<_Tp>, 9 is_move_assignable<_Tp>>::value>::type swap(_Tp & __a,_Tp & __b)10 swap(_Tp& __a, _Tp& __b) 11 noexcept(__and_<is_nothrow_move_constructible<_Tp>, 12 is_nothrow_move_assignable<_Tp>>::value) 13 { 14 _Tp __tmp = move(__a); 15 __a = move(__b); 16 __b = move(__tmp); 17 } 18