template struct __and_; template struct __not_; template struct is_move_constructible; template struct is_nothrow_move_constructible; template struct is_move_assignable; template struct is_nothrow_move_assignable; template struct remove_reference; template struct enable_if; template using __enable_if_t = typename enable_if<_Cond, _Tp>::type; template using _Require = __enable_if_t<__and_<_Cond...>::value>; template struct __is_tuple_like; template constexpr inline _Require<__not_<__is_tuple_like<_Tp>>, is_move_constructible<_Tp>, is_move_assignable<_Tp>> swap(_Tp&, _Tp&) noexcept(__and_, is_nothrow_move_assignable<_Tp>>::value);