Skip to content

Commit eef4bdb

Browse files
committed
[libc++] Add a missing <_Compare> template argument.
Sometimes `_Compare` is an lvalue reference type, so letting it be deduced is pretty much always wrong. (Well, less efficient than it could be, anyway.) Differential Revision: https://reviews.llvm.org/D93562
1 parent 08d4a50 commit eef4bdb

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

libcxx/include/algorithm

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4483,7 +4483,7 @@ __buffered_inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator
44834483
value_type* __p = __buff;
44844484
for (_BidirectionalIterator __i = __first; __i != __middle; __d.template __incr<value_type>(), (void) ++__i, (void) ++__p)
44854485
::new ((void*)__p) value_type(_VSTD::move(*__i));
4486-
_VSTD::__half_inplace_merge(__buff, __p, __middle, __last, __first, __comp);
4486+
_VSTD::__half_inplace_merge<_Compare>(__buff, __p, __middle, __last, __first, __comp);
44874487
}
44884488
else
44894489
{
@@ -4492,9 +4492,10 @@ __buffered_inplace_merge(_BidirectionalIterator __first, _BidirectionalIterator
44924492
::new ((void*)__p) value_type(_VSTD::move(*__i));
44934493
typedef reverse_iterator<_BidirectionalIterator> _RBi;
44944494
typedef reverse_iterator<value_type*> _Rv;
4495-
_VSTD::__half_inplace_merge(_Rv(__p), _Rv(__buff),
4495+
typedef __invert<_Compare> _Inverted;
4496+
_VSTD::__half_inplace_merge<_Inverted>(_Rv(__p), _Rv(__buff),
44964497
_RBi(__middle), _RBi(__first),
4497-
_RBi(__last), _VSTD::__invert<_Compare>(__comp));
4498+
_RBi(__last), _Inverted(__comp));
44984499
}
44994500
}
45004501

0 commit comments

Comments
 (0)