blob: 8f6bce04bee7219c6117948ae4600eedc92ebce1 [file] [log] [blame]
template<typename...>
struct __and_;
template<typename _Pp>
struct __not_;
template<typename _Tp>
struct is_move_constructible;
template<typename _Tp>
struct is_nothrow_move_constructible;
template<typename _Tp>
struct is_move_assignable;
template<typename _Tp>
struct is_nothrow_move_assignable;
template<typename _Tp>
struct remove_reference;
template<bool, typename _Tp = void>
struct enable_if;
template<bool _Cond, typename _Tp = void>
using __enable_if_t = typename enable_if<_Cond, _Tp>::type;
template<typename... _Cond>
using _Require = __enable_if_t<__and_<_Cond...>::value>;
template<typename _Tp>
struct __is_tuple_like;
template<typename _Tp>
constexpr inline
_Require<__not_<__is_tuple_like<_Tp>>,
is_move_constructible<_Tp>,
is_move_assignable<_Tp>>
swap(_Tp&, _Tp&)
noexcept(__and_<is_nothrow_move_constructible<_Tp>,
is_nothrow_move_assignable<_Tp>>::value);