(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)))
{ }
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
template<typename... _UElements>
constexpr
_Tuple_impl(_Tuple_impl<_Idx, _UElements...>& __in)
(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)))
{ }
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
template<typename _Alloc, typename _UHead, typename... _UTails>
constexpr
_Tuple_impl(allocator_arg_t __tag, const _Alloc& __a,
std::move(_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)));
}
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
template<typename... _UElements>
constexpr void
_M_assign(const _Tuple_impl<_Idx, _UElements...>& __in) const
_Inherited::_M_swap(_M_tail(__in));
}
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
constexpr void
_M_swap(const _Tuple_impl& __in) const
{
: _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)))
{ }
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
template<typename _UHead>
constexpr
_Tuple_impl(_Tuple_impl<_Idx, _UHead>& __in)
std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)))
{ }
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
template<typename _Alloc, typename _UHead>
constexpr
_Tuple_impl(allocator_arg_t, const _Alloc& __a,
= std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in));
}
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
template<typename _UHead>
constexpr void
_M_assign(const _Tuple_impl<_Idx, _UHead>& __in) const
swap(_M_head(*this), _M_head(__in));
}
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
constexpr void
_M_swap(const _Tuple_impl& __in) const
{
public:
_GLIBCXX20_CONSTEXPR
void swap(tuple&) noexcept { /* no-op */ }
-#if __cplusplus > 202002L
+#if __cpp_lib_ranges_zip // >= C++23
constexpr void swap(const tuple&) const noexcept { /* no-op */ }
#endif
// We need the default since we're going to define no-op