Skip to content

Commit bf74931

Browse files
Pass policy tags via template parameters/arguments
1 parent 029fe74 commit bf74931

File tree

1 file changed

+8
-13
lines changed

1 file changed

+8
-13
lines changed

libcxx/include/deque

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -833,7 +833,7 @@ public:
833833
_LIBCPP_HIDE_FROM_ABI iterator insert_range(const_iterator __position, _Range&& __range) {
834834
if constexpr (ranges::bidirectional_range<_Range>) {
835835
auto __n = static_cast<size_type>(ranges::distance(__range));
836-
return __insert_bidirectional(__position, ranges::begin(__range), ranges::end(__range), __n);
836+
return __insert_bidirectional<_RangeAlgPolicy>(__position, ranges::begin(__range), ranges::end(__range), __n);
837837

838838
} else if constexpr (ranges::forward_range<_Range> || ranges::sized_range<_Range>) {
839839
auto __n = static_cast<size_type>(ranges::distance(__range));
@@ -1203,10 +1203,10 @@ private:
12031203
template <class _Iterator>
12041204
_LIBCPP_HIDE_FROM_ABI iterator __insert_with_size(const_iterator __p, _Iterator __f, size_type __n);
12051205

1206-
template <class _BiIter, class _Sentinel>
1206+
template <class _IterOpsPolicy, class _BiIter, class _Sentinel>
12071207
_LIBCPP_HIDE_FROM_ABI iterator
12081208
__insert_bidirectional(const_iterator __p, _BiIter __f, _Sentinel __sent, size_type __n);
1209-
template <class _BiIter>
1209+
template <class _IterOpsPolicy, class _BiIter>
12101210
_LIBCPP_HIDE_FROM_ABI iterator __insert_bidirectional(const_iterator __p, _BiIter __f, _BiIter __l, size_type __n);
12111211

12121212
template <class _InpIter, __enable_if_t<__has_exactly_input_iterator_category<_InpIter>::value, int> = 0>
@@ -1903,26 +1903,21 @@ deque<_Tp, _Allocator>::__insert_with_size(const_iterator __p, _Iterator __f, si
19031903
template <class _Tp, class _Allocator>
19041904
template <class _BiIter, __enable_if_t<__has_bidirectional_iterator_category<_BiIter>::value, int> >
19051905
typename deque<_Tp, _Allocator>::iterator deque<_Tp, _Allocator>::insert(const_iterator __p, _BiIter __f, _BiIter __l) {
1906-
return __insert_bidirectional(__p, __f, __l, std::distance(__f, __l));
1906+
return __insert_bidirectional<_ClassicAlgPolicy>(__p, __f, __l, std::distance(__f, __l));
19071907
}
19081908

19091909
template <class _Tp, class _Allocator>
1910-
template <class _BiIter, class _Sentinel>
1910+
template <class _IterOpsPolicy, class _BiIter, class _Sentinel>
19111911
_LIBCPP_HIDE_FROM_ABI typename deque<_Tp, _Allocator>::iterator
19121912
deque<_Tp, _Allocator>::__insert_bidirectional(const_iterator __p, _BiIter __f, _Sentinel, size_type __n) {
1913-
return __insert_bidirectional(__p, __f, std::next(__f, __n), __n);
1913+
return __insert_bidirectional<_IterOpsPolicy>(__p, __f, _IterOps<_IterOpsPolicy>::next(__f, __n), __n);
19141914
}
19151915

19161916
template <class _Tp, class _Allocator>
1917-
template <class _BiIter>
1917+
template <class _IterOpsPolicy, class _BiIter>
19181918
_LIBCPP_HIDE_FROM_ABI typename deque<_Tp, _Allocator>::iterator
19191919
deque<_Tp, _Allocator>::__insert_bidirectional(const_iterator __p, _BiIter __f, _BiIter __l, size_type __n) {
1920-
# if _LIBCPP_STD_VER >= 20
1921-
using _Ops = _IterOps<
1922-
conditional_t<__has_bidirectional_iterator_category<_BiIter>::value, _ClassicAlgPolicy, _RangeAlgPolicy>>;
1923-
# else
1924-
using _Ops = _IterOps<_ClassicAlgPolicy>;
1925-
# endif
1920+
using _Ops = _IterOps<_IterOpsPolicy>;
19261921
size_type __pos = __p - begin();
19271922
size_type __to_end = size() - __pos;
19281923
allocator_type& __a = __alloc();

0 commit comments

Comments
 (0)