mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-14 11:39:35 +00:00
Remove addtional parameters in function std::next() and std::prev()
Creating a function pointer with proper parameters pointing to std::next() or std::prev() should work. This change moves the invented paramater for enable_if over to the return type to resolve this QoI issue. Patch by Jason Liu. Differential Revision: https://reviews.llvm.org/D34649 llvm-svn: 308932
This commit is contained in:
parent
c7d30e9c0a
commit
3e2ef40812
@ -604,21 +604,27 @@ distance(_InputIter __first, _InputIter __last)
|
||||
|
||||
template <class _InputIter>
|
||||
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
|
||||
_InputIter
|
||||
typename enable_if
|
||||
<
|
||||
__is_input_iterator<_InputIter>::value,
|
||||
_InputIter
|
||||
>::type
|
||||
next(_InputIter __x,
|
||||
typename iterator_traits<_InputIter>::difference_type __n = 1,
|
||||
typename enable_if<__is_input_iterator<_InputIter>::value>::type* = 0)
|
||||
typename iterator_traits<_InputIter>::difference_type __n = 1)
|
||||
{
|
||||
_VSTD::advance(__x, __n);
|
||||
return __x;
|
||||
}
|
||||
|
||||
template <class _BidiretionalIter>
|
||||
template <class _BidirectionalIter>
|
||||
inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
|
||||
_BidiretionalIter
|
||||
prev(_BidiretionalIter __x,
|
||||
typename iterator_traits<_BidiretionalIter>::difference_type __n = 1,
|
||||
typename enable_if<__is_bidirectional_iterator<_BidiretionalIter>::value>::type* = 0)
|
||||
typename enable_if
|
||||
<
|
||||
__is_bidirectional_iterator<_BidirectionalIter>::value,
|
||||
_BidirectionalIter
|
||||
>::type
|
||||
prev(_BidirectionalIter __x,
|
||||
typename iterator_traits<_BidirectionalIter>::difference_type __n = 1)
|
||||
{
|
||||
_VSTD::advance(__x, -__n);
|
||||
return __x;
|
||||
|
@ -24,6 +24,9 @@ void
|
||||
test(It i, typename std::iterator_traits<It>::difference_type n, It x)
|
||||
{
|
||||
assert(std::next(i, n) == x);
|
||||
|
||||
It (*next)(It, typename std::iterator_traits<It>::difference_type) = std::next;
|
||||
assert(next(i, n) == x);
|
||||
}
|
||||
|
||||
template <class It>
|
||||
|
@ -22,6 +22,9 @@ void
|
||||
test(It i, typename std::iterator_traits<It>::difference_type n, It x)
|
||||
{
|
||||
assert(std::prev(i, n) == x);
|
||||
|
||||
It (*prev)(It, typename std::iterator_traits<It>::difference_type) = std::prev;
|
||||
assert(prev(i, n) == x);
|
||||
}
|
||||
|
||||
template <class It>
|
||||
|
Loading…
Reference in New Issue
Block a user