@@ -1273,15 +1273,19 @@ operator<=(const tuple<_Tp...>& __x, const tuple<_Up...>& __y) {
12731273template <class ... _Tuples>
12741274struct __tuple_cat_return_impl ;
12751275
1276- template <class _Tuple >
1277- struct __tuple_cat_return_impl <_Tuple > {
1278- using type _LIBCPP_NODEBUG = _Tuple ;
1276+ template <class ... _Types >
1277+ struct __tuple_cat_return_impl <tuple<_Types...> > {
1278+ using type _LIBCPP_NODEBUG = tuple<_Types...> ;
12791279};
12801280
1281- template <class ... _Types0, template < class ...> class _Tuple , class ... _Types1, class ... _Tuples>
1282- struct __tuple_cat_return_impl <tuple<_Types0...>, _Tuple <_Types1...>, _Tuples...>
1281+ template <class ... _Types0, class ... _Types1, class ... _Tuples>
1282+ struct __tuple_cat_return_impl <tuple<_Types0...>, tuple <_Types1...>, _Tuples...>
12831283 : __tuple_cat_return_impl<tuple<_Types0..., _Types1...>, _Tuples...> {};
12841284
1285+ template <class ... _Types0, class _Tp , class _Up , class ... _Tuples>
1286+ struct __tuple_cat_return_impl <tuple<_Types0...>, pair<_Tp, _Up>, _Tuples...>
1287+ : __tuple_cat_return_impl<tuple<_Types0..., _Tp, _Up>, _Tuples...> {};
1288+
12851289template <class , class , class >
12861290struct __tuple_cat_array ;
12871291
@@ -1369,11 +1373,7 @@ __tuple_cat_select_element_wise(_TupleSrc&& __src, __index_sequence<_Indices...>
13691373 return _TupleDst (std::get<_Indices>(std::forward<_TupleSrc>(__src))...);
13701374}
13711375
1372- template <class _Tuple0 ,
1373- class ... _Tuples,
1374- __enable_if_t <
1375- _And<__tuple_like_ext<__remove_cvref_t <_Tuple0>>, __tuple_like_ext<__remove_cvref_t <_Tuples>>...>::value,
1376- int > = 0 >
1376+ template <class _Tuple0 , class ... _Tuples>
13771377inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 __tuple_cat_return_t <_Tuple0, _Tuples...>
13781378tuple_cat (_Tuple0&& __t0, _Tuples&&... __tpls) {
13791379 using _T0 _LIBCPP_NODEBUG = __libcpp_remove_reference_t <_Tuple0>;
0 commit comments