mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2024-11-14 10:39:05 +00:00
fix non-modifying algorithm: for InputIterator Requirements
This commit is contained in:
parent
3800b22a22
commit
4e4c1b1786
5 changed files with 9 additions and 5 deletions
|
@ -59,7 +59,9 @@ namespace sprout {
|
|||
{
|
||||
typedef sprout::pair<InputIterator, typename std::iterator_traits<InputIterator>::difference_type> type;
|
||||
return current.first == last ? current
|
||||
: n == 1 ? type(sprout::next(current.first), current.second + (*current.first == value ? 1 : 0))
|
||||
: n == 1 ? *current.first == value
|
||||
? type(sprout::next(current.first), current.second + 1)
|
||||
: type(sprout::next(current.first), current.second)
|
||||
: sprout::detail::count_impl_1(
|
||||
sprout::detail::count_impl_1(
|
||||
current,
|
||||
|
|
|
@ -59,7 +59,9 @@ namespace sprout {
|
|||
{
|
||||
typedef sprout::pair<InputIterator, typename std::iterator_traits<InputIterator>::difference_type> type;
|
||||
return current.first == last ? current
|
||||
: n == 1 ? type(sprout::next(current.first), current.second + (pred(*current.first) ? 1 : 0))
|
||||
: n == 1 ? pred(*current.first)
|
||||
? type(sprout::next(current.first), current.second + 1)
|
||||
: type(sprout::next(current.first), current.second)
|
||||
: sprout::detail::count_if_impl_1(
|
||||
sprout::detail::count_if_impl_1(
|
||||
current,
|
||||
|
|
|
@ -52,7 +52,7 @@ namespace sprout {
|
|||
typedef sprout::pair<InputIterator, typename std::iterator_traits<InputIterator>::difference_type> type;
|
||||
return current.second > 1 || current.first == last ? current
|
||||
: n == 1 ? current.second == 0
|
||||
? type(sprout::next(current.first), pred(*current.first) ? 0 : 1)
|
||||
? pred(*current.first) ? type(sprout::next(current.first), 0) : type(sprout::next(current.first), 1)
|
||||
: !pred(*current.first) ? type(sprout::next(current.first), 1) : type(current.first, 2)
|
||||
: sprout::detail::is_partitioned_impl_1(
|
||||
sprout::detail::is_partitioned_impl_1(
|
||||
|
|
|
@ -82,7 +82,7 @@ namespace sprout {
|
|||
typedef sprout::pair<InputIterator, typename std::iterator_traits<InputIterator>::difference_type> type;
|
||||
return current.second > 1 || current.first == last ? current
|
||||
: n == 1 ? current.second == 0
|
||||
? type(sprout::next(current.first), pred(*current.first) ? 1 : 0)
|
||||
? !pred(*current.first) ? type(sprout::next(current.first), 0) : type(sprout::next(current.first), 1)
|
||||
: !pred(*current.first) ? type(sprout::next(current.first), 1) : type(current.first, 2)
|
||||
: sprout::detail::one_of_impl_1(
|
||||
sprout::detail::one_of_impl_1(
|
||||
|
|
|
@ -82,7 +82,7 @@ namespace sprout {
|
|||
typedef sprout::pair<InputIterator, typename std::iterator_traits<InputIterator>::difference_type> type;
|
||||
return current.second > 1 || current.first == last ? current
|
||||
: n == 1 ? current.second == 0
|
||||
? type(sprout::next(current.first), *current.first == value ? 1 : 0)
|
||||
? !(*current.first == value) ? type(sprout::next(current.first), 0) : type(sprout::next(current.first), 1)
|
||||
: !(*current.first == value) ? type(sprout::next(current.first), 1) : type(current.first, 2)
|
||||
: sprout::detail::one_of_equal_impl_1(
|
||||
sprout::detail::one_of_equal_impl_1(
|
||||
|
|
Loading…
Reference in a new issue