Skip to content

Commit f82b747

Browse files
committed
Update libcxx to 2 Apr 2024 239236b8c2154aa49e98bc7ed774a7d2712edf50
``` [libc++] Remove pair dependency (#85621) [libc++] Simplify the implementation of <stddef.h> (#86843) Update the "Current Status" section of the website to be current. (#84507) [libc++] Optimize the two range overload of mismatch (#86853) [libc++] Refactor __tuple_like and __pair_like (#85206) [libc++][test] Improves src include paths. (#86864) [libc++] Document guidelines for applying [[nodiscard]] (#84000) [libc++] Optimize the std::mismatch tail (#83440) [libc++] Remove <queue> and <stack> includes from <format> (#85520) [libc++] Switch FreeBSD to C++26 (#86658) [libc++] Fix one case in saturate_cast.pass.cpp for 64-bit on z/OS (#86724) [libc++][test] Remove tests that testing std::variant<T&> (#84222) [libc++] <experimental/simd> Reduce types for template parameter U in tests (#83781) [libc++] Switch FreeBSD CI job to Clang 17 (#86320) [libc++][CI] Updates the documentation. (#85264) [libc++][format] Adds ABI tags to inline constexpr variables. (#86293) [libc++][test] Fix race condition in condition_variable_any tests (#84788) [libc++] Vectorize mismatch (#73255) [libc++] Don't push and pop extensions diagnostics when using clang modules (#85917) [libc++][ranges] use `static operator()` for C++23 ranges (#86052) [libc++] Implement LWG3528 (`make_from_tuple` can perform (the equivalent of) a C-style cast) (#85263) [libc++] Remove macros for keeping std::allocator members and void specialization after C++20 (#85806) [libc++] Deprecates std::errc constants. (#80542) [libcxx] [cmake] Fix cmake_path(ABSOLUTE_PATH) for empty CMAKE_INSTALL_PREFIX [libc++][CI] Reenables the module tests. (#85799) [libc++][ranges] remove `__workaround_52970` (#85683) [libc++][ranges] LWG3715: `view_interface::empty` is overconstrained (#85004) [libcxx] [modules] Fix relative paths with absolute LIBCXX_INSTALL_MODULES_DIR (#85756) [libc++][format] Fixes nested concept evaluation. (#85548) [libc++][CMake] Removes LIBCXX_ENABLE_CLANG_TIDY. (#85262) [libc++] Remove __unconstrained_reverse_iterator (#85582) [libc++] Simplify the implementation of remove_reference (#85207) [libcxx][test] Create feature host-can-create-symlinks (#82204) [libc++] Use __is_scoped_enum for the implementation of is_scoped_enum if it's available (#85580) [libc++] Add missing hide-from-ABI annotations on virtual functions (#85439) [libc++] Optimize ranges::fill{,_n} for vector<bool>::iterator (#84642) [libc++] Add <locale> include in <chrono> (#85521) [libc++] Remove <locale> includes from <format> (#85478) [libc++] P2602R2 Poison Pills are Too Toxic (#74534) [libc++] Fixes run-buildbot-container. (#84644) [libc++] Add [[nodiscard]] to static numeric limit functions (#83748) Rework Modules CMake to be (more) idiomatic. (#84936) [libc++] Enables TZDB tests. (#82108) [libc++] Remove a few includes from <__functional/hash.h> (#83254) [libc++] Implements filebuf unbuffered. (#76629) [libc++][CI] Updates the version number of the latest release. [libc++] Remove <tuple> include from <__format/concepts.h> (#80214) [runtimes] Prefer -fvisibility-global-new-delete=force-hidden (#84917) [libc++] Fix tests on musl (#85085) [libc++] Remove _LIBCPP_ENABLE_NARROWING_CONVERSIONS_IN_VARIANT (#83928) [libcxx] Fix incorrect type in the has-1024-bit-atomics feature test (#84904) [libc++] Improves UB handling in ios_base destructor. (#76525) [libc++][CI] Installs tzdata package in Docker. (#84643) [libc++][TZDB] Fixes parsing interleaved rules. (#84808) [libc++][hardening] Check bounds on arithmetic in __bounded_iter (#78876) [libc++][hardening] Add iterator validity checks on unordered containers (#80230) [libc++][hardening] Reclassify string_view(ptr, len)'s size assertion (#79297) [libc++] Re-enable the clang_modules_include test for Objective-C++ (#66801) [libc++] Remove XFAIL for SIMD in optimized build (#84767) [libcxx] Update 128-bit-atomics feature test (#83841) [libc++] Only forward-declare ABI-functions in exception_ptr.h if they are meant to be used (#84707) [libc++][test] Don't include `test_format_context.h` in `parse.pass.cpp` (#83734) [libc++] Add missing include in test (#84579) [libc++] Remove <tuple> from <variant> (#83183) [RFC][libc++] Reworks clang-tidy selection. (#81362) [libc++] Remove <array> include from <span> (#83742) [libc++][format] Updates LWG3462 status. (#80550) [libc++][format] Update LWG3701 status. (#80545) [libc++][test] Fix MSVC warning C4127 in `array.cons/initialization.pass.cpp` (#79793) [libc++] Simplify the std::pair constructor overload set (#81448) [libc++] Allow the use of extensions in the implementation (#79532) [libc++] Don't build against libcxxrt by default on FreeBSD (#84484) Actually disable the module generation tests. [libc++] Disable module_std and module_std_compat tests [libc++] Enable availability based on the compiler instead of __has_extension (#84065) [libc++] Fixes time formatter test output for Linux on PowerPC (#75526) [libc++] Remove unused includes from __type_traits/is_convertible.h (#83747) ``` commit_hash:171258d93ab92f516dfb1789300677a164e63219
1 parent 8c5910b commit f82b747

File tree

187 files changed

+1603
-1754
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

187 files changed

+1603
-1754
lines changed

build/sysincl/stl-to-libcxx.yml

+9-17
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,7 @@
418418
- __algorithm/shift_right.h: contrib/libs/cxxsupp/libcxx/include/__algorithm/shift_right.h
419419
- __algorithm/shuffle.h: contrib/libs/cxxsupp/libcxx/include/__algorithm/shuffle.h
420420
- __algorithm/sift_down.h: contrib/libs/cxxsupp/libcxx/include/__algorithm/sift_down.h
421+
- __algorithm/simd_utils.h: contrib/libs/cxxsupp/libcxx/include/__algorithm/simd_utils.h
421422
- __algorithm/sort.h: contrib/libs/cxxsupp/libcxx/include/__algorithm/sort.h
422423
- __algorithm/sort_heap.h: contrib/libs/cxxsupp/libcxx/include/__algorithm/sort_heap.h
423424
- __algorithm/stable_partition.h: contrib/libs/cxxsupp/libcxx/include/__algorithm/stable_partition.h
@@ -577,7 +578,6 @@
577578
- __format/format_context.h: contrib/libs/cxxsupp/libcxx/include/__format/format_context.h
578579
- __format/format_error.h: contrib/libs/cxxsupp/libcxx/include/__format/format_error.h
579580
- __format/format_functions.h: contrib/libs/cxxsupp/libcxx/include/__format/format_functions.h
580-
- __format/format_fwd.h: contrib/libs/cxxsupp/libcxx/include/__format/format_fwd.h
581581
- __format/format_parse_context.h: contrib/libs/cxxsupp/libcxx/include/__format/format_parse_context.h
582582
- __format/format_string.h: contrib/libs/cxxsupp/libcxx/include/__format/format_string.h
583583
- __format/format_to_n_result.h: contrib/libs/cxxsupp/libcxx/include/__format/format_to_n_result.h
@@ -627,21 +627,27 @@
627627
- __fwd/array.h: contrib/libs/cxxsupp/libcxx/include/__fwd/array.h
628628
- __fwd/bit_reference.h: contrib/libs/cxxsupp/libcxx/include/__fwd/bit_reference.h
629629
- __fwd/complex.h: contrib/libs/cxxsupp/libcxx/include/__fwd/complex.h
630+
- __fwd/deque.h: contrib/libs/cxxsupp/libcxx/include/__fwd/deque.h
631+
- __fwd/format.h: contrib/libs/cxxsupp/libcxx/include/__fwd/format.h
630632
- __fwd/fstream.h: contrib/libs/cxxsupp/libcxx/include/__fwd/fstream.h
631633
- __fwd/functional.h: contrib/libs/cxxsupp/libcxx/include/__fwd/functional.h
632634
- __fwd/ios.h: contrib/libs/cxxsupp/libcxx/include/__fwd/ios.h
633635
- __fwd/istream.h: contrib/libs/cxxsupp/libcxx/include/__fwd/istream.h
634636
- __fwd/mdspan.h: contrib/libs/cxxsupp/libcxx/include/__fwd/mdspan.h
637+
- __fwd/memory.h: contrib/libs/cxxsupp/libcxx/include/__fwd/memory.h
635638
- __fwd/memory_resource.h: contrib/libs/cxxsupp/libcxx/include/__fwd/memory_resource.h
636639
- __fwd/ostream.h: contrib/libs/cxxsupp/libcxx/include/__fwd/ostream.h
637640
- __fwd/pair.h: contrib/libs/cxxsupp/libcxx/include/__fwd/pair.h
641+
- __fwd/queue.h: contrib/libs/cxxsupp/libcxx/include/__fwd/queue.h
638642
- __fwd/span.h: contrib/libs/cxxsupp/libcxx/include/__fwd/span.h
639643
- __fwd/sstream.h: contrib/libs/cxxsupp/libcxx/include/__fwd/sstream.h
644+
- __fwd/stack.h: contrib/libs/cxxsupp/libcxx/include/__fwd/stack.h
640645
- __fwd/streambuf.h: contrib/libs/cxxsupp/libcxx/include/__fwd/streambuf.h
641646
- __fwd/string.h: contrib/libs/cxxsupp/libcxx/include/__fwd/string.h
642647
- __fwd/string_view.h: contrib/libs/cxxsupp/libcxx/include/__fwd/string_view.h
643648
- __fwd/subrange.h: contrib/libs/cxxsupp/libcxx/include/__fwd/subrange.h
644649
- __fwd/tuple.h: contrib/libs/cxxsupp/libcxx/include/__fwd/tuple.h
650+
- __fwd/vector.h: contrib/libs/cxxsupp/libcxx/include/__fwd/vector.h
645651
- __ios/fpos.h: contrib/libs/cxxsupp/libcxx/include/__ios/fpos.h
646652
- __iterator/access.h: contrib/libs/cxxsupp/libcxx/include/__iterator/access.h
647653
- __iterator/advance.h: contrib/libs/cxxsupp/libcxx/include/__iterator/advance.h
@@ -892,13 +898,14 @@
892898
- __thread/this_thread.h: contrib/libs/cxxsupp/libcxx/include/__thread/this_thread.h
893899
- __thread/thread.h: contrib/libs/cxxsupp/libcxx/include/__thread/thread.h
894900
- __thread/timed_backoff_policy.h: contrib/libs/cxxsupp/libcxx/include/__thread/timed_backoff_policy.h
901+
- __tuple/find_index.h: contrib/libs/cxxsupp/libcxx/include/__tuple/find_index.h
895902
- __tuple/make_tuple_types.h: contrib/libs/cxxsupp/libcxx/include/__tuple/make_tuple_types.h
896-
- __tuple/pair_like.h: contrib/libs/cxxsupp/libcxx/include/__tuple/pair_like.h
897903
- __tuple/sfinae_helpers.h: contrib/libs/cxxsupp/libcxx/include/__tuple/sfinae_helpers.h
898904
- __tuple/tuple_element.h: contrib/libs/cxxsupp/libcxx/include/__tuple/tuple_element.h
899905
- __tuple/tuple_indices.h: contrib/libs/cxxsupp/libcxx/include/__tuple/tuple_indices.h
900906
- __tuple/tuple_like.h: contrib/libs/cxxsupp/libcxx/include/__tuple/tuple_like.h
901907
- __tuple/tuple_like_ext.h: contrib/libs/cxxsupp/libcxx/include/__tuple/tuple_like_ext.h
908+
- __tuple/tuple_like_no_subrange.h: contrib/libs/cxxsupp/libcxx/include/__tuple/tuple_like_no_subrange.h
902909
- __tuple/tuple_size.h: contrib/libs/cxxsupp/libcxx/include/__tuple/tuple_size.h
903910
- __tuple/tuple_types.h: contrib/libs/cxxsupp/libcxx/include/__tuple/tuple_types.h
904911
- __type_traits/add_const.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/add_const.h
@@ -945,10 +952,7 @@
945952
- __type_traits/is_constant_evaluated.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_constant_evaluated.h
946953
- __type_traits/is_constructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_constructible.h
947954
- __type_traits/is_convertible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_convertible.h
948-
- __type_traits/is_copy_assignable.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_copy_assignable.h
949-
- __type_traits/is_copy_constructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_copy_constructible.h
950955
- __type_traits/is_core_convertible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_core_convertible.h
951-
- __type_traits/is_default_constructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_default_constructible.h
952956
- __type_traits/is_destructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_destructible.h
953957
- __type_traits/is_empty.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_empty.h
954958
- __type_traits/is_enum.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_enum.h
@@ -964,17 +968,10 @@
964968
- __type_traits/is_member_function_pointer.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_member_function_pointer.h
965969
- __type_traits/is_member_object_pointer.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_member_object_pointer.h
966970
- __type_traits/is_member_pointer.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_member_pointer.h
967-
- __type_traits/is_move_assignable.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_move_assignable.h
968-
- __type_traits/is_move_constructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_move_constructible.h
969971
- __type_traits/is_nothrow_assignable.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_nothrow_assignable.h
970972
- __type_traits/is_nothrow_constructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_nothrow_constructible.h
971973
- __type_traits/is_nothrow_convertible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_nothrow_convertible.h
972-
- __type_traits/is_nothrow_copy_assignable.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_nothrow_copy_assignable.h
973-
- __type_traits/is_nothrow_copy_constructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_nothrow_copy_constructible.h
974-
- __type_traits/is_nothrow_default_constructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_nothrow_default_constructible.h
975974
- __type_traits/is_nothrow_destructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_nothrow_destructible.h
976-
- __type_traits/is_nothrow_move_assignable.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_nothrow_move_assignable.h
977-
- __type_traits/is_nothrow_move_constructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_nothrow_move_constructible.h
978975
- __type_traits/is_null_pointer.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_null_pointer.h
979976
- __type_traits/is_object.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_object.h
980977
- __type_traits/is_pod.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_pod.h
@@ -995,14 +992,9 @@
995992
- __type_traits/is_trivial.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_trivial.h
996993
- __type_traits/is_trivially_assignable.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_trivially_assignable.h
997994
- __type_traits/is_trivially_constructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_trivially_constructible.h
998-
- __type_traits/is_trivially_copy_assignable.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_trivially_copy_assignable.h
999-
- __type_traits/is_trivially_copy_constructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_trivially_copy_constructible.h
1000995
- __type_traits/is_trivially_copyable.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_trivially_copyable.h
1001-
- __type_traits/is_trivially_default_constructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_trivially_default_constructible.h
1002996
- __type_traits/is_trivially_destructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_trivially_destructible.h
1003997
- __type_traits/is_trivially_lexicographically_comparable.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_trivially_lexicographically_comparable.h
1004-
- __type_traits/is_trivially_move_assignable.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_trivially_move_assignable.h
1005-
- __type_traits/is_trivially_move_constructible.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_trivially_move_constructible.h
1006998
- __type_traits/is_trivially_relocatable.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_trivially_relocatable.h
1007999
- __type_traits/is_unbounded_array.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_unbounded_array.h
10081000
- __type_traits/is_union.h: contrib/libs/cxxsupp/libcxx/include/__type_traits/is_union.h

contrib/libs/cxxsupp/libcxx/include/__algorithm/copy.h

+2-4
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ template <class, class _InIter, class _Sent, class _OutIter>
3232
inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter> __copy(_InIter, _Sent, _OutIter);
3333

3434
template <class _AlgPolicy>
35-
struct __copy_loop {
35+
struct __copy_impl {
3636
template <class _InIter, class _Sent, class _OutIter>
3737
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter>
3838
operator()(_InIter __first, _Sent __last, _OutIter __result) const {
@@ -94,9 +94,7 @@ struct __copy_loop {
9494
__local_first = _Traits::__begin(++__segment_iterator);
9595
}
9696
}
97-
};
9897

99-
struct __copy_trivial {
10098
// At this point, the iterators have been unwrapped so any `contiguous_iterator` has been unwrapped to a pointer.
10199
template <class _In, class _Out, __enable_if_t<__can_lower_copy_assignment_to_memmove<_In, _Out>::value, int> = 0>
102100
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*>
@@ -108,7 +106,7 @@ struct __copy_trivial {
108106
template <class _AlgPolicy, class _InIter, class _Sent, class _OutIter>
109107
pair<_InIter, _OutIter> inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14
110108
__copy(_InIter __first, _Sent __last, _OutIter __result) {
111-
return std::__dispatch_copy_or_move<_AlgPolicy, __copy_loop<_AlgPolicy>, __copy_trivial>(
109+
return std::__copy_move_unwrap_iters<__copy_impl<_AlgPolicy> >(
112110
std::move(__first), std::move(__last), std::move(__result));
113111
}
114112

contrib/libs/cxxsupp/libcxx/include/__algorithm/copy_backward.h

+3-5
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#include <__config>
1616
#include <__iterator/segmented_iterator.h>
1717
#include <__type_traits/common_type.h>
18-
#include <__type_traits/is_copy_constructible.h>
18+
#include <__type_traits/is_constructible.h>
1919
#include <__utility/move.h>
2020
#include <__utility/pair.h>
2121

@@ -33,7 +33,7 @@ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_InIter, _OutIter>
3333
__copy_backward(_InIter __first, _Sent __last, _OutIter __result);
3434

3535
template <class _AlgPolicy>
36-
struct __copy_backward_loop {
36+
struct __copy_backward_impl {
3737
template <class _InIter, class _Sent, class _OutIter>
3838
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_InIter, _OutIter>
3939
operator()(_InIter __first, _Sent __last, _OutIter __result) const {
@@ -104,9 +104,7 @@ struct __copy_backward_loop {
104104
__local_last = _Traits::__end(__segment_iterator);
105105
}
106106
}
107-
};
108107

109-
struct __copy_backward_trivial {
110108
// At this point, the iterators have been unwrapped so any `contiguous_iterator` has been unwrapped to a pointer.
111109
template <class _In, class _Out, __enable_if_t<__can_lower_copy_assignment_to_memmove<_In, _Out>::value, int> = 0>
112110
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 pair<_In*, _Out*>
@@ -118,7 +116,7 @@ struct __copy_backward_trivial {
118116
template <class _AlgPolicy, class _BidirectionalIterator1, class _Sentinel, class _BidirectionalIterator2>
119117
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 pair<_BidirectionalIterator1, _BidirectionalIterator2>
120118
__copy_backward(_BidirectionalIterator1 __first, _Sentinel __last, _BidirectionalIterator2 __result) {
121-
return std::__dispatch_copy_or_move<_AlgPolicy, __copy_backward_loop<_AlgPolicy>, __copy_backward_trivial>(
119+
return std::__copy_move_unwrap_iters<__copy_backward_impl<_AlgPolicy> >(
122120
std::move(__first), std::move(__last), std::move(__result));
123121
}
124122

contrib/libs/cxxsupp/libcxx/include/__algorithm/copy_move_common.h

+8-33
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#include <__type_traits/enable_if.h>
2020
#include <__type_traits/is_always_bitcastable.h>
2121
#include <__type_traits/is_constant_evaluated.h>
22-
#include <__type_traits/is_copy_constructible.h>
22+
#include <__type_traits/is_constructible.h>
2323
#include <__type_traits/is_trivially_assignable.h>
2424
#include <__type_traits/is_trivially_copyable.h>
2525
#include <__type_traits/is_volatile.h>
@@ -81,30 +81,17 @@ __copy_backward_trivial_impl(_In* __first, _In* __last, _Out* __result) {
8181

8282
// Iterator unwrapping and dispatching to the correct overload.
8383

84-
template <class _F1, class _F2>
85-
struct __overload : _F1, _F2 {
86-
using _F1::operator();
87-
using _F2::operator();
88-
};
89-
90-
template <class _InIter, class _Sent, class _OutIter, class = void>
91-
struct __can_rewrap : false_type {};
92-
93-
template <class _InIter, class _Sent, class _OutIter>
94-
struct __can_rewrap<_InIter,
95-
_Sent,
96-
_OutIter,
97-
// Note that sentinels are always copy-constructible.
98-
__enable_if_t< is_copy_constructible<_InIter>::value && is_copy_constructible<_OutIter>::value > >
99-
: true_type {};
84+
template <class _InIter, class _OutIter>
85+
struct __can_rewrap
86+
: integral_constant<bool, is_copy_constructible<_InIter>::value && is_copy_constructible<_OutIter>::value> {};
10087

10188
template <class _Algorithm,
10289
class _InIter,
10390
class _Sent,
10491
class _OutIter,
105-
__enable_if_t<__can_rewrap<_InIter, _Sent, _OutIter>::value, int> = 0>
92+
__enable_if_t<__can_rewrap<_InIter, _OutIter>::value, int> = 0>
10693
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 pair<_InIter, _OutIter>
107-
__unwrap_and_dispatch(_InIter __first, _Sent __last, _OutIter __out_first) {
94+
__copy_move_unwrap_iters(_InIter __first, _Sent __last, _OutIter __out_first) {
10895
auto __range = std::__unwrap_range(__first, std::move(__last));
10996
auto __result = _Algorithm()(std::move(__range.first), std::move(__range.second), std::__unwrap_iter(__out_first));
11097
return std::make_pair(std::__rewrap_range<_Sent>(std::move(__first), std::move(__result.first)),
@@ -115,24 +102,12 @@ template <class _Algorithm,
115102
class _InIter,
116103
class _Sent,
117104
class _OutIter,
118-
__enable_if_t<!__can_rewrap<_InIter, _Sent, _OutIter>::value, int> = 0>
105+
__enable_if_t<!__can_rewrap<_InIter, _OutIter>::value, int> = 0>
119106
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 pair<_InIter, _OutIter>
120-
__unwrap_and_dispatch(_InIter __first, _Sent __last, _OutIter __out_first) {
107+
__copy_move_unwrap_iters(_InIter __first, _Sent __last, _OutIter __out_first) {
121108
return _Algorithm()(std::move(__first), std::move(__last), std::move(__out_first));
122109
}
123110

124-
template <class _AlgPolicy,
125-
class _NaiveAlgorithm,
126-
class _OptimizedAlgorithm,
127-
class _InIter,
128-
class _Sent,
129-
class _OutIter>
130-
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 pair<_InIter, _OutIter>
131-
__dispatch_copy_or_move(_InIter __first, _Sent __last, _OutIter __out_first) {
132-
using _Algorithm = __overload<_NaiveAlgorithm, _OptimizedAlgorithm>;
133-
return std::__unwrap_and_dispatch<_Algorithm>(std::move(__first), std::move(__last), std::move(__out_first));
134-
}
135-
136111
_LIBCPP_END_NAMESPACE_STD
137112

138113
_LIBCPP_POP_MACROS

0 commit comments

Comments
 (0)