algorithm を next/prev で再実装

This commit is contained in:
bolero-MURAKAMI 2011-10-02 00:19:13 +09:00
parent 6fe7e88509
commit 628d1caa7e
50 changed files with 310 additions and 189 deletions

View file

@ -6,6 +6,7 @@
#include <sprout/index_tuple.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_ITERATOR_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -27,8 +28,8 @@ namespace sprout {
result,
sprout::size(result),
(Indexes >= offset && Indexes < offset + size && Indexes < offset + input_size
? *(first + Indexes - offset)
: *(sprout::fixed_begin(result) + Indexes)
? *sprout::next(first, Indexes - offset)
: *sprout::next(sprout::fixed_begin(result), Indexes)
)...
);
}

View file

@ -6,6 +6,7 @@
#include <sprout/index_tuple.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_ITERATOR_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -27,8 +28,8 @@ namespace sprout {
result,
sprout::size(result),
(Indexes < offset && Indexes + size >= offset && Indexes + input_size >= offset
? *(last + Indexes - offset)
: *(sprout::fixed_begin(result) + Indexes)
? *sprout::next(last, Indexes - offset)
: *sprout::next(sprout::fixed_begin(result), Indexes)
)...
);
}

View file

@ -5,6 +5,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
namespace sprout {
@ -30,7 +31,7 @@ namespace sprout {
Args const&... args
)
{
return copy_if_impl_3(result, args..., *(sprout::fixed_begin(result) + sizeof...(Args)));
return copy_if_impl_3(result, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)));
}
template<typename Iterator, typename Result, typename Predicate, typename... Args>
SPROUT_CONSTEXPR inline typename std::enable_if<
@ -62,8 +63,8 @@ namespace sprout {
{
return first != last && sizeof...(Args) < offset
? pred(*first)
? copy_if_impl_2(first + 1, last, result, pred, offset, args..., *first)
: copy_if_impl_2(first + 1, last, result, pred, offset, args...)
? copy_if_impl_2(sprout::next(first), last, result, pred, offset, args..., *first)
: copy_if_impl_2(sprout::next(first), last, result, pred, offset, args...)
: copy_if_impl_3(result, args...)
;
}
@ -96,7 +97,7 @@ namespace sprout {
)
{
return sizeof...(Args) < offset
? copy_if_impl_1(first, last, result, pred, offset, args..., *(sprout::fixed_begin(result) + sizeof...(Args)))
? copy_if_impl_1(first, last, result, pred, offset, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)))
: copy_if_impl_2(first, last, result, pred, offset + sprout::size(result), args...)
;
}

View file

@ -4,6 +4,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/algorithm/fixed/copy.hpp>
@ -21,7 +22,7 @@ namespace sprout {
{
return sprout::fixed::detail::copy_impl(
first,
first + n,
sprout::next(first, n),
result,
typename sprout::index_range<0, sprout::fixed_container_traits<Result>::fixed_size>::type(),
sprout::fixed_begin_offset(result),

View file

@ -6,6 +6,7 @@
#include <sprout/index_tuple.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
namespace sprout {
@ -25,7 +26,7 @@ namespace sprout {
sprout::size(cont),
(Indexes >= offset && Indexes < offset + size
? value
: *(sprout::fixed_begin(cont) + Indexes)
: *sprout::next(sprout::fixed_begin(cont), Indexes)
)...
);
}

View file

@ -6,6 +6,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
namespace sprout {
@ -55,7 +56,7 @@ namespace sprout {
Args const&... args
)
{
return generate_impl_4(cont, args..., *(sprout::fixed_begin(cont) + sizeof...(Args)));
return generate_impl_4(cont, args..., *sprout::next(sprout::fixed_begin(cont), sizeof...(Args)));
}
template<std::size_t InitSize, typename Container, typename Generator, typename... Args>
SPROUT_CONSTEXPR inline typename std::enable_if<
@ -161,7 +162,7 @@ namespace sprout {
)
{
return sizeof...(Args) - InitSize < offset
? generate_impl_1<InitSize>(cont, gen, offset, size, args..., *(sprout::fixed_begin(cont) + sizeof...(Args) - InitSize))
? generate_impl_1<InitSize>(cont, gen, offset, size, args..., *sprout::next(sprout::fixed_begin(cont), sizeof...(Args) - InitSize))
: generate_impl_2<InitSize>(cont, gen, offset, size, InitSize, args...)
;
}

View file

@ -5,6 +5,7 @@
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/algorithm/fixed/swap_element.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -32,10 +33,14 @@ namespace sprout {
typename sprout::fixed_container_traits<Container>::difference_type r
)
{
return comp(*(sprout::fixed_begin(cont) + offset + l), *(sprout::fixed_begin(cont) + offset + r))
? comp(*(sprout::fixed_begin(cont) + offset + n), *(sprout::fixed_begin(cont) + offset + r))
return comp(*sprout::next(sprout::fixed_begin(cont), offset + l), *sprout::next(sprout::fixed_begin(cont), offset + r))
? comp(*sprout::next(sprout::fixed_begin(cont), offset + n), *sprout::next(sprout::fixed_begin(cont), offset + r))
? sprout::fixed::detail::make_heap_impl(
sprout::fixed::swap_element(cont, sprout::fixed_begin(cont) + offset + n, sprout::fixed_begin(cont) + offset + r),
sprout::fixed::swap_element(
cont,
sprout::next(sprout::fixed_begin(cont), offset + n),
sprout::next(sprout::fixed_begin(cont), offset + r)
),
comp,
offset,
size,
@ -44,9 +49,13 @@ namespace sprout {
r * 2 + 2
)
: sprout::clone(cont)
: comp(*(sprout::fixed_begin(cont) + offset + n), *(sprout::fixed_begin(cont) + offset + l))
: comp(*sprout::next(sprout::fixed_begin(cont), offset + n), *sprout::next(sprout::fixed_begin(cont), offset + l))
? sprout::fixed::detail::make_heap_impl(
sprout::fixed::swap_element(cont, sprout::fixed_begin(cont) + offset + n, sprout::fixed_begin(cont) + offset + l),
sprout::fixed::swap_element(
cont,
sprout::next(sprout::fixed_begin(cont), offset + n),
sprout::next(sprout::fixed_begin(cont), offset + l)
),
comp,
offset,
size,
@ -71,11 +80,23 @@ namespace sprout {
return r > size
? sprout::clone(cont)
: r == size
? comp(*(sprout::fixed_begin(cont) + offset + n), *(sprout::fixed_begin(cont) + offset + l))
? sprout::fixed::swap_element(cont, sprout::fixed_begin(cont) + offset + n, sprout::fixed_begin(cont) + offset + l)
? comp(*sprout::next(sprout::fixed_begin(cont), offset + n), *sprout::next(sprout::fixed_begin(cont), offset + l))
? sprout::fixed::swap_element(
cont,
sprout::next(sprout::fixed_begin(cont), offset + n),
sprout::next(sprout::fixed_begin(cont), offset + l)
)
: sprout::clone(cont)
: sprout::fixed::detail::make_heap_impl_1(
sprout::fixed::detail::make_heap_impl(sprout::fixed::detail::make_heap_impl(cont, comp, offset, size, l, l * 2 + 1, l * 2 + 2), comp, offset, size, r, r * 2 + 1, r * 2 + 2),
sprout::fixed::detail::make_heap_impl(
sprout::fixed::detail::make_heap_impl(cont, comp, offset, size, l, l * 2 + 1, l * 2 + 2),
comp,
offset,
size,
r,
r * 2 + 1,
r * 2 + 2
),
comp,
offset,
size,

View file

@ -4,6 +4,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/algorithm/fixed/swap_element.hpp>
#include <sprout/algorithm/fixed/pop_heap.hpp>
@ -25,10 +26,14 @@ namespace sprout {
)
{
return n < size
? comp(*(sprout::fixed_begin(cont) + offset + n), *(sprout::fixed_begin(cont) + offset))
? comp(*sprout::next(sprout::fixed_begin(cont), offset + n), *sprout::next(sprout::fixed_begin(cont), offset))
? sprout::fixed::detail::make_partial_heap_impl_1(
sprout::fixed::detail::pop_heap_impl(
sprout::fixed::swap_element(cont, sprout::fixed_begin(cont) + offset + n, sprout::fixed_begin(cont) + offset),
sprout::fixed::swap_element(
cont,
sprout::next(sprout::fixed_begin(cont), offset + n),
sprout::next(sprout::fixed_begin(cont), offset)
),
comp,
offset,
middle_size

View file

@ -5,6 +5,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -31,7 +32,7 @@ namespace sprout {
Args const&... args
)
{
return merge_impl_3(result, args..., *(sprout::fixed_begin(result) + sizeof...(Args)));
return merge_impl_3(result, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)));
}
template<typename Iterator1, typename Iterator2, typename Result, typename Compare, typename... Args>
SPROUT_CONSTEXPR inline typename std::enable_if<
@ -69,11 +70,11 @@ namespace sprout {
? first1 != last1
? first2 != last2
? comp(*first2, *first1)
? merge_impl_2(first1, last1, first2 + 1, last2, result, comp, offset, args..., *first2)
: merge_impl_2(first1 + 1, last1, first2, last2, result, comp, offset, args..., *first1)
: merge_impl_2(first1 + 1, last1, first2, last2, result, comp, offset, args..., *first1)
? merge_impl_2(first1, last1, sprout::next(first2), last2, result, comp, offset, args..., *first2)
: merge_impl_2(sprout::next(first1), last1, first2, last2, result, comp, offset, args..., *first1)
: merge_impl_2(sprout::next(first1), last1, first2, last2, result, comp, offset, args..., *first1)
: first2 != last2
? merge_impl_2(first1, last1, first2 + 1, last2, result, comp, offset, args..., *first2)
? merge_impl_2(first1, last1, sprout::next(first2), last2, result, comp, offset, args..., *first2)
: merge_impl_3(result, args...)
: merge_impl_3(result, args...)
;
@ -111,7 +112,7 @@ namespace sprout {
)
{
return sizeof...(Args) < offset
? merge_impl_1(first1, last1, first2, last2, result, comp, offset, args..., *(sprout::fixed_begin(result) + sizeof...(Args)))
? merge_impl_1(first1, last1, first2, last2, result, comp, offset, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)))
: merge_impl_2(first1, last1, first2, last2, result, comp, offset + sprout::size(result), args...)
;
}

View file

@ -4,6 +4,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/algorithm/fixed/swap_element.hpp>
#include <sprout/algorithm/fixed/make_partial_heap.hpp>
@ -22,8 +23,8 @@ namespace sprout {
{
return sprout::fixed::swap_element(
cont,
sprout::fixed_begin(cont) + offset,
sprout::fixed_begin(cont) + offset + nth_size
sprout::next(sprout::fixed_begin(cont), offset),
sprout::next(sprout::fixed_begin(cont), offset + nth_size)
);
}
template<typename Container, typename Compare>

View file

@ -5,6 +5,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
namespace sprout {
@ -30,7 +31,7 @@ namespace sprout {
Args const&... args
)
{
return partition_copy_impl_3(result, args..., *(sprout::fixed_begin(result) + sizeof...(Args)));
return partition_copy_impl_3(result, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)));
}
template<typename Iterator, typename Result, typename Predicate, typename... Args>
SPROUT_CONSTEXPR inline typename std::enable_if<
@ -62,8 +63,8 @@ namespace sprout {
{
return first != last && sizeof...(Args) < offset
? pred(*first)
? partition_copy_impl_2(first + 1, last, result, pred, offset, *first, args...)
: partition_copy_impl_2(first + 1, last, result, pred, offset, args..., *first)
? partition_copy_impl_2(sprout::next(first), last, result, pred, offset, *first, args...)
: partition_copy_impl_2(sprout::next(first), last, result, pred, offset, args..., *first)
: partition_copy_impl_3(result, args...)
;
}
@ -96,7 +97,7 @@ namespace sprout {
)
{
return sizeof...(Args) < offset
? partition_copy_impl_1(first, last, result, pred, offset, args..., *(sprout::fixed_begin(result) + sizeof...(Args)))
? partition_copy_impl_1(first, last, result, pred, offset, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)))
: partition_copy_impl_2(first, last, result, pred, offset + sprout::size(result), args...)
;
}

View file

@ -4,6 +4,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/algorithm/fixed/swap_element.hpp>
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -22,10 +23,14 @@ namespace sprout {
typename sprout::fixed_container_traits<Container>::difference_type r = 2
)
{
return r < size && comp(*(sprout::fixed_begin(cont) + offset + l), *(sprout::fixed_begin(cont) + offset + r))
? comp(*(sprout::fixed_begin(cont) + offset + n), *(sprout::fixed_begin(cont) + offset + r))
return r < size && comp(*sprout::next(sprout::fixed_begin(cont), offset + l), *sprout::next(sprout::fixed_begin(cont), offset + r))
? comp(*sprout::next(sprout::fixed_begin(cont), offset + n), *sprout::next(sprout::fixed_begin(cont), offset + r))
? sprout::fixed::detail::pop_heap_impl(
sprout::fixed::swap_element(cont, sprout::fixed_begin(cont) + offset + n, sprout::fixed_begin(cont) + offset + r),
sprout::fixed::swap_element(
cont,
sprout::next(sprout::fixed_begin(cont), offset + n),
sprout::next(sprout::fixed_begin(cont), offset + r)
),
comp,
offset,
size,
@ -35,9 +40,13 @@ namespace sprout {
)
: sprout::clone(cont)
: l < size
? comp(*(sprout::fixed_begin(cont) + offset + n), *(sprout::fixed_begin(cont) + offset + l))
? comp(*sprout::next(sprout::fixed_begin(cont), offset + n), *sprout::next(sprout::fixed_begin(cont), offset + l))
? sprout::fixed::detail::pop_heap_impl(
sprout::fixed::swap_element(cont, sprout::fixed_begin(cont) + offset + n, sprout::fixed_begin(cont) + offset + l),
sprout::fixed::swap_element(
cont,
sprout::next(sprout::fixed_begin(cont), offset + n),
sprout::next(sprout::fixed_begin(cont), offset + l)
),
comp,
offset,
size,

View file

@ -4,6 +4,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/algorithm/fixed/swap_element.hpp>
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -19,9 +20,13 @@ namespace sprout {
typename sprout::fixed_container_traits<Container>::difference_type n
)
{
return n != 0 && comp(*(sprout::fixed_begin(cont) + offset + (n - 1) / 2), *(sprout::fixed_begin(cont) + offset + n))
return n != 0 && comp(*sprout::next(sprout::fixed_begin(cont), offset + (n - 1) / 2), *sprout::next(sprout::fixed_begin(cont), offset + n))
? sprout::fixed::detail::push_heap_impl(
sprout::fixed::swap_element(cont, sprout::fixed_begin(cont) + offset + (n - 1) / 2, sprout::fixed_begin(cont) + offset + n),
sprout::fixed::swap_element(
cont,
sprout::next(sprout::fixed_begin(cont), offset + (n - 1) / 2),
sprout::next(sprout::fixed_begin(cont), offset + n)
),
comp,
offset,
(n - 1) / 2

View file

@ -5,6 +5,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
namespace sprout {
@ -30,7 +31,7 @@ namespace sprout {
Args const&... args
)
{
return remove_copy_impl_3(result, args..., *(sprout::fixed_begin(result) + sizeof...(Args)));
return remove_copy_impl_3(result, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)));
}
template<typename Iterator, typename Result, typename T, typename... Args>
SPROUT_CONSTEXPR inline typename std::enable_if<
@ -62,8 +63,8 @@ namespace sprout {
{
return first != last && sizeof...(Args) < offset
? *first == value
? remove_copy_impl_2(first + 1, last, result, value, offset, args...)
: remove_copy_impl_2(first + 1, last, result, value, offset, args..., *first)
? remove_copy_impl_2(sprout::next(first), last, result, value, offset, args...)
: remove_copy_impl_2(sprout::next(first), last, result, value, offset, args..., *first)
: remove_copy_impl_3(result, args...)
;
}
@ -96,7 +97,7 @@ namespace sprout {
)
{
return sizeof...(Args) < offset
? remove_copy_impl_1(first, last, result, value, offset, args..., *(sprout::fixed_begin(result) + sizeof...(Args)))
? remove_copy_impl_1(first, last, result, value, offset, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)))
: remove_copy_impl_2(first, last, result, value, offset + sprout::size(result), args...)
;
}

View file

@ -5,6 +5,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
namespace sprout {
@ -30,7 +31,7 @@ namespace sprout {
Args const&... args
)
{
return remove_copy_if_impl_3(result, args..., *(sprout::fixed_begin(result) + sizeof...(Args)));
return remove_copy_if_impl_3(result, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)));
}
template<typename Iterator, typename Result, typename Predicate, typename... Args>
SPROUT_CONSTEXPR inline typename std::enable_if<
@ -62,8 +63,8 @@ namespace sprout {
{
return first != last && sizeof...(Args) < offset
? pred(*first)
? remove_copy_if_impl_2(first + 1, last, result, pred, offset, args...)
: remove_copy_if_impl_2(first + 1, last, result, pred, offset, args..., *first)
? remove_copy_if_impl_2(sprout::next(first), last, result, pred, offset, args...)
: remove_copy_if_impl_2(sprout::next(first), last, result, pred, offset, args..., *first)
: remove_copy_if_impl_3(result, args...)
;
}
@ -96,7 +97,7 @@ namespace sprout {
)
{
return sizeof...(Args) < offset
? remove_copy_if_impl_1(first, last, result, pred, offset, args..., *(sprout::fixed_begin(result) + sizeof...(Args)))
? remove_copy_if_impl_1(first, last, result, pred, offset, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)))
: remove_copy_if_impl_2(first, last, result, pred, offset + sprout::size(result), args...)
;
}

View file

@ -6,6 +6,7 @@
#include <sprout/index_tuple.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_ITERATOR_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -29,8 +30,8 @@ namespace sprout {
result,
sprout::size(result),
(Indexes >= offset && Indexes < offset + size && Indexes < offset + input_size
? *(first + Indexes - offset) == old_value ? new_value : *(first + Indexes - offset)
: *(sprout::fixed_begin(result) + Indexes)
? *sprout::next(first, Indexes - offset) == old_value ? new_value : *sprout::next(first, Indexes - offset)
: *sprout::next(sprout::fixed_begin(result), Indexes)
)...
);
}

View file

@ -6,6 +6,7 @@
#include <sprout/index_tuple.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_ITERATOR_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -29,8 +30,8 @@ namespace sprout {
result,
sprout::size(result),
(Indexes >= offset && Indexes < offset + size && Indexes < offset + input_size
? pred(*(first + Indexes - offset)) ? new_value : *(first + Indexes - offset)
: *(sprout::fixed_begin(result) + Indexes)
? pred(*sprout::next(first, Indexes - offset)) ? new_value : *sprout::next(first, Indexes - offset)
: *sprout::next(sprout::fixed_begin(result), Indexes)
)...
);
}

View file

@ -6,7 +6,9 @@
#include <sprout/index_tuple.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_ITERATOR_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -28,8 +30,8 @@ namespace sprout {
result,
sprout::size(result),
(Indexes >= offset && Indexes < offset + size && Indexes < offset + input_size
? *(last - 1 - Indexes + offset)
: *(sprout::fixed_begin(result) + Indexes)
? *sprout::prev(last, 1 + Indexes - offset)
: *sprout::next(sprout::fixed_begin(result), Indexes)
)...
);
}

View file

@ -6,6 +6,7 @@
#include <sprout/index_tuple.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_ITERATOR_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -29,10 +30,10 @@ namespace sprout {
sprout::size(result),
(Indexes >= offset && Indexes < offset + size && Indexes < offset + input_size
? (Indexes < offset + NS_SSCRISK_CEL_OR_SPROUT_DETAIL::distance(middle, last)
? *(middle + Indexes - offset)
: *((first + Indexes - offset) - NS_SSCRISK_CEL_OR_SPROUT_DETAIL::distance(first, middle))
? *sprout::next(middle, Indexes - offset)
: *sprout::prev(sprout::next(first, Indexes - offset), NS_SSCRISK_CEL_OR_SPROUT_DETAIL::distance(first, middle))
)
: *(sprout::fixed_begin(result) + Indexes)
: *sprout::next(sprout::fixed_begin(result), Indexes)
)...
);
}

View file

@ -5,6 +5,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -31,7 +32,7 @@ namespace sprout {
Args const&... args
)
{
return set_difference_impl_3(result, args..., *(sprout::fixed_begin(result) + sizeof...(Args)));
return set_difference_impl_3(result, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)));
}
template<typename Iterator1, typename Iterator2, typename Result, typename Compare, typename... Args>
SPROUT_CONSTEXPR inline typename std::enable_if<
@ -69,13 +70,13 @@ namespace sprout {
? first1 != last1
? first2 != last2
? comp(*first1, *first2)
? set_difference_impl_2(first1 + 1, last1, first2, last2, result, comp, offset, args..., *first1)
? set_difference_impl_2(sprout::next(first1), last1, first2, last2, result, comp, offset, args..., *first1)
: comp(*first2, *first1)
? set_difference_impl_2(first1, last1, first2 + 1, last2, result, comp, offset, args...)
: set_difference_impl_2(first1 + 1, last1, first2 + 1, last2, result, comp, offset, args...)
: set_difference_impl_2(first1 + 1, last1, first2, last2, result, comp, offset, args..., *first1)
? set_difference_impl_2(first1, last1, sprout::next(first2), last2, result, comp, offset, args...)
: set_difference_impl_2(sprout::next(first1), last1, sprout::next(first2), last2, result, comp, offset, args...)
: set_difference_impl_2(sprout::next(first1), last1, first2, last2, result, comp, offset, args..., *first1)
: first2 != last2
? set_difference_impl_2(first1, last1, first2 + 1, last2, result, comp, offset, args...)
? set_difference_impl_2(first1, last1, sprout::next(first2), last2, result, comp, offset, args...)
: set_difference_impl_3(result, args...)
: set_difference_impl_3(result, args...)
;
@ -113,7 +114,7 @@ namespace sprout {
)
{
return sizeof...(Args) < offset
? set_difference_impl_1(first1, last1, first2, last2, result, comp, offset, args..., *(sprout::fixed_begin(result) + sizeof...(Args)))
? set_difference_impl_1(first1, last1, first2, last2, result, comp, offset, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)))
: set_difference_impl_2(first1, last1, first2, last2, result, comp, offset + sprout::size(result), args...)
;
}

View file

@ -5,6 +5,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -31,7 +32,7 @@ namespace sprout {
Args const&... args
)
{
return set_intersection_impl_3(result, args..., *(sprout::fixed_begin(result) + sizeof...(Args)));
return set_intersection_impl_3(result, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)));
}
template<typename Iterator1, typename Iterator2, typename Result, typename Compare, typename... Args>
SPROUT_CONSTEXPR inline typename std::enable_if<
@ -69,13 +70,13 @@ namespace sprout {
? first1 != last1
? first2 != last2
? comp(*first1, *first2)
? set_intersection_impl_2(first1 + 1, last1, first2, last2, result, comp, offset, args...)
? set_intersection_impl_2(sprout::next(first1), last1, first2, last2, result, comp, offset, args...)
: comp(*first2, *first1)
? set_intersection_impl_2(first1, last1, first2 + 1, last2, result, comp, offset, args...)
: set_intersection_impl_2(first1 + 1, last1, first2 + 1, last2, result, comp, offset, args..., *first1)
: set_intersection_impl_2(first1 + 1, last1, first2, last2, result, comp, offset, args...)
? set_intersection_impl_2(first1, last1, sprout::next(first2), last2, result, comp, offset, args...)
: set_intersection_impl_2(sprout::next(first1), last1, sprout::next(first2), last2, result, comp, offset, args..., *first1)
: set_intersection_impl_2(sprout::next(first1), last1, first2, last2, result, comp, offset, args...)
: first2 != last2
? set_intersection_impl_2(first1, last1, first2 + 1, last2, result, comp, offset, args...)
? set_intersection_impl_2(first1, last1, sprout::next(first2), last2, result, comp, offset, args...)
: set_intersection_impl_3(result, args...)
: set_intersection_impl_3(result, args...)
;
@ -113,7 +114,7 @@ namespace sprout {
)
{
return sizeof...(Args) < offset
? set_intersection_impl_1(first1, last1, first2, last2, result, comp, offset, args..., *(sprout::fixed_begin(result) + sizeof...(Args)))
? set_intersection_impl_1(first1, last1, first2, last2, result, comp, offset, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)))
: set_intersection_impl_2(first1, last1, first2, last2, result, comp, offset + sprout::size(result), args...)
;
}

View file

@ -5,6 +5,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -31,7 +32,7 @@ namespace sprout {
Args const&... args
)
{
return set_symmetric_difference_impl_3(result, args..., *(sprout::fixed_begin(result) + sizeof...(Args)));
return set_symmetric_difference_impl_3(result, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)));
}
template<typename Iterator1, typename Iterator2, typename Result, typename Compare, typename... Args>
SPROUT_CONSTEXPR inline typename std::enable_if<
@ -69,13 +70,13 @@ namespace sprout {
? first1 != last1
? first2 != last2
? comp(*first1, *first2)
? set_symmetric_difference_impl_2(first1 + 1, last1, first2, last2, result, comp, offset, args..., *first1)
? set_symmetric_difference_impl_2(sprout::next(first1), last1, first2, last2, result, comp, offset, args..., *first1)
: comp(*first2, *first1)
? set_symmetric_difference_impl_2(first1, last1, first2 + 1, last2, result, comp, offset, args..., *first2)
: set_symmetric_difference_impl_2(first1 + 1, last1, first2 + 1, last2, result, comp, offset, args...)
: set_symmetric_difference_impl_2(first1 + 1, last1, first2, last2, result, comp, offset, args..., *first1)
? set_symmetric_difference_impl_2(first1, last1, sprout::next(first2), last2, result, comp, offset, args..., *first2)
: set_symmetric_difference_impl_2(sprout::next(first1), last1, sprout::next(first2), last2, result, comp, offset, args...)
: set_symmetric_difference_impl_2(sprout::next(first1), last1, first2, last2, result, comp, offset, args..., *first1)
: first2 != last2
? set_symmetric_difference_impl_2(first1, last1, first2 + 1, last2, result, comp, offset, args..., *first2)
? set_symmetric_difference_impl_2(first1, last1, sprout::next(first2), last2, result, comp, offset, args..., *first2)
: set_symmetric_difference_impl_3(result, args...)
: set_symmetric_difference_impl_3(result, args...)
;
@ -113,7 +114,7 @@ namespace sprout {
)
{
return sizeof...(Args) < offset
? set_symmetric_difference_impl_1(first1, last1, first2, last2, result, comp, offset, args..., *(sprout::fixed_begin(result) + sizeof...(Args)))
? set_symmetric_difference_impl_1(first1, last1, first2, last2, result, comp, offset, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)))
: set_symmetric_difference_impl_2(first1, last1, first2, last2, result, comp, offset + sprout::size(result), args...)
;
}

View file

@ -5,6 +5,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -31,7 +32,7 @@ namespace sprout {
Args const&... args
)
{
return set_union_impl_3(result, args..., *(sprout::fixed_begin(result) + sizeof...(Args)));
return set_union_impl_3(result, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)));
}
template<typename Iterator1, typename Iterator2, typename Result, typename Compare, typename... Args>
SPROUT_CONSTEXPR inline typename std::enable_if<
@ -69,13 +70,13 @@ namespace sprout {
? first1 != last1
? first2 != last2
? comp(*first1, *first2)
? set_union_impl_2(first1 + 1, last1, first2, last2, result, comp, offset, args..., *first1)
? set_union_impl_2(sprout::next(first1), last1, first2, last2, result, comp, offset, args..., *first1)
: comp(*first2, *first1)
? set_union_impl_2(first1, last1, first2 + 1, last2, result, comp, offset, args..., *first2)
: set_union_impl_2(first1 + 1, last1, first2 + 1, last2, result, comp, offset, args..., *first1)
: set_union_impl_2(first1 + 1, last1, first2, last2, result, comp, offset, args..., *first1)
? set_union_impl_2(first1, last1, sprout::next(first2), last2, result, comp, offset, args..., *first2)
: set_union_impl_2(sprout::next(first1), last1, sprout::next(first2), last2, result, comp, offset, args..., *first1)
: set_union_impl_2(sprout::next(first1), last1, first2, last2, result, comp, offset, args..., *first1)
: first2 != last2
? set_union_impl_2(first1, last1, first2 + 1, last2, result, comp, offset, args..., *first2)
? set_union_impl_2(first1, last1, sprout::next(first2), last2, result, comp, offset, args..., *first2)
: set_union_impl_3(result, args...)
: set_union_impl_3(result, args...)
;
@ -113,7 +114,7 @@ namespace sprout {
)
{
return sizeof...(Args) < offset
? set_union_impl_1(first1, last1, first2, last2, result, comp, offset, args..., *(sprout::fixed_begin(result) + sizeof...(Args)))
? set_union_impl_1(first1, last1, first2, last2, result, comp, offset, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)))
: set_union_impl_2(first1, last1, first2, last2, result, comp, offset + sprout::size(result), args...)
;
}

View file

@ -5,6 +5,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/algorithm/fixed/swap_element.hpp>
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -20,7 +21,7 @@ namespace sprout {
typename sprout::fixed_container_traits<Container>::difference_type end
)
{ // pivot を選ぶ(中央の要素)
return *(origin + (end + start) / 2);
return *sprout::next(origin, (end + start) / 2);
}
template<typename Container, typename Iterator, typename Compare>
SPROUT_CONSTEXPR inline typename sprout::fixed_container_traits<Container>::difference_type sort_find_l(
@ -30,7 +31,7 @@ namespace sprout {
typename sprout::fixed_container_traits<Container>::value_type const& p
)
{ // left を見つける
return comp(*(origin + l), p) ? sort_find_l<Container>(origin, comp, l + 1, p) : l;
return comp(*sprout::next(origin, l), p) ? sort_find_l<Container>(origin, comp, l + 1, p) : l;
}
template<typename Container, typename Iterator, typename Compare>
SPROUT_CONSTEXPR inline typename sprout::fixed_container_traits<Container>::difference_type sort_find_r(
@ -40,7 +41,7 @@ namespace sprout {
typename sprout::fixed_container_traits<Container>::value_type const& p
)
{ // right を見つける
return comp(p, *(origin + r)) ? sort_find_r<Container>(origin, comp, r - 1, p) : r;
return comp(p, *sprout::next(origin, r)) ? sort_find_r<Container>(origin, comp, r - 1, p) : r;
}
template<typename Container>
SPROUT_CONSTEXPR inline typename sprout::fixed::result_of::algorithm<Container>::type swap_lr(
@ -93,7 +94,7 @@ namespace sprout {
{ // left と right 比較して、左右に分けてソートするか、またはスワップしてこの範囲のソートを続ける
return l >= r
? sort_part_lr(cont, start, end, comp, l, r)
: sort_lr(sprout::fixed::swap_element(cont, sprout::fixed_begin(cont) + l, sprout::fixed_begin(cont) + r), start, end, comp, l + 1, r - 1, p)
: sort_lr(sprout::fixed::swap_element(cont, sprout::next(sprout::fixed_begin(cont), l), sprout::next(sprout::fixed_begin(cont), r)), start, end, comp, l + 1, r - 1, p)
;
}
template<typename Container, typename Compare>

View file

@ -4,6 +4,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/algorithm/fixed/swap_element.hpp>
#include <sprout/algorithm/fixed/pop_heap.hpp>
@ -24,7 +25,7 @@ namespace sprout {
? sprout::clone(cont)
: sprout::fixed::detail::sort_heap_impl(
sprout::fixed::detail::pop_heap_impl(
sprout::fixed::swap_element(cont, sprout::begin(cont), sprout::begin(cont) + size - 1),
sprout::fixed::swap_element(cont, sprout::begin(cont), sprout::next(sprout::begin(cont), size - 1)),
comp,
offset,
size - 1

View file

@ -5,6 +5,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
namespace sprout {
@ -30,7 +31,7 @@ namespace sprout {
Args const&... args
)
{
return stable_partition_copy_impl_4(result, args..., *(sprout::fixed_begin(result) + sizeof...(Args)));
return stable_partition_copy_impl_4(result, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)));
}
template<typename Iterator, typename Result, typename Predicate, typename... Args>
@ -63,8 +64,8 @@ namespace sprout {
{
return first != last && sizeof...(Args) < offset
? !pred(*first)
? stable_partition_copy_impl_3(first + 1, last, result, pred, offset, args..., *first)
: stable_partition_copy_impl_3(first + 1, last, result, pred, offset, args...)
? stable_partition_copy_impl_3(sprout::next(first), last, result, pred, offset, args..., *first)
: stable_partition_copy_impl_3(sprout::next(first), last, result, pred, offset, args...)
: stable_partition_copy_impl_4(result, args...)
;
}
@ -101,8 +102,8 @@ namespace sprout {
{
return first != last && sizeof...(Args) < offset
? pred(*first)
? stable_partition_copy_impl_2(first + 1, last, result, pred, offset, origin, args..., *first)
: stable_partition_copy_impl_2(first + 1, last, result, pred, offset, origin, args...)
? stable_partition_copy_impl_2(sprout::next(first), last, result, pred, offset, origin, args..., *first)
: stable_partition_copy_impl_2(sprout::next(first), last, result, pred, offset, origin, args...)
: stable_partition_copy_impl_3(origin, last, result, pred, offset, args...)
;
}
@ -137,7 +138,7 @@ namespace sprout {
)
{
return sizeof...(Args) < offset
? stable_partition_copy_impl_1(first, last, result, pred, offset, origin, args..., *(sprout::fixed_begin(result) + sizeof...(Args)))
? stable_partition_copy_impl_1(first, last, result, pred, offset, origin, args..., *sprout::next(sprout::fixed_begin(result), sizeof...(Args)))
: stable_partition_copy_impl_2(first, last, result, pred, offset + sprout::size(result), origin, args...)
;
}

View file

@ -6,6 +6,7 @@
#include <sprout/index_tuple.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -31,7 +32,7 @@ namespace sprout {
sprout::index_tuple<Indexes...>
)
{
return sprout::remake_clone<Container, Container>(cont, sprout::size(cont), (*(sprout::fixed_begin(cont) + Indexes))...);
return sprout::remake_clone<Container, Container>(cont, sprout::size(cont), (*sprout::next(sprout::fixed_begin(cont), Indexes))...);
}
template<typename Container, typename Compare, std::ptrdiff_t I1, std::ptrdiff_t... Indexes, std::ptrdiff_t I2, std::ptrdiff_t... SortedIndexes, std::ptrdiff_t... NextIndexes, std::ptrdiff_t... PreIndexes, std::ptrdiff_t... PostIndexes>
SPROUT_CONSTEXPR inline typename std::enable_if<
@ -47,7 +48,7 @@ namespace sprout {
sprout::index_tuple<PostIndexes...>
)
{
return comp(*(sprout::fixed_begin(cont) + I1), *(sprout::fixed_begin(cont) + I2))
return comp(*sprout::next(sprout::fixed_begin(cont), I1), *sprout::next(sprout::fixed_begin(cont), I2))
? stable_sort_impl_finish(cont, sprout::index_tuple<PreIndexes..., NextIndexes..., I1, I2, SortedIndexes..., PostIndexes...>())
: stable_sort_impl_finish(cont, sprout::index_tuple<PreIndexes..., NextIndexes..., I2, I1, SortedIndexes..., PostIndexes...>())
;
@ -66,7 +67,7 @@ namespace sprout {
sprout::index_tuple<PostIndexes...>
)
{
return comp(*(sprout::fixed_begin(cont) + I1), *(sprout::fixed_begin(cont) + I2))
return comp(*sprout::next(sprout::fixed_begin(cont), I1), *sprout::next(sprout::fixed_begin(cont), I2))
? stable_sort_impl_finish(cont, sprout::index_tuple<PreIndexes..., NextIndexes..., I1, I2, SortedIndexes..., PostIndexes...>())
: stable_sort_impl_4(cont, comp, sprout::index_tuple<I1>(), sprout::index_tuple<SortedIndexes...>(), sprout::index_tuple<NextIndexes..., I2>(), sprout::index_tuple<PreIndexes...>(), sprout::index_tuple<PostIndexes...>())
;
@ -85,7 +86,7 @@ namespace sprout {
sprout::index_tuple<PostIndexes...>
)
{
return comp(*(sprout::fixed_begin(cont) + I1), *(sprout::fixed_begin(cont) + I2))
return comp(*sprout::next(sprout::fixed_begin(cont), I1), *sprout::next(sprout::fixed_begin(cont), I2))
? stable_sort_impl_4(cont, comp, sprout::index_tuple<Indexes...>(), sprout::index_tuple<NextIndexes..., I1, I2, SortedIndexes...>(), sprout::index_tuple<>(), sprout::index_tuple<PreIndexes...>(), sprout::index_tuple<PostIndexes...>())
: stable_sort_impl_4(cont, comp, sprout::index_tuple<Indexes...>(), sprout::index_tuple<NextIndexes..., I2, I1, SortedIndexes...>(), sprout::index_tuple<>(), sprout::index_tuple<PreIndexes...>(), sprout::index_tuple<PostIndexes...>())
;
@ -104,7 +105,7 @@ namespace sprout {
sprout::index_tuple<PostIndexes...>
)
{
return comp(*(sprout::fixed_begin(cont) + I1), *(sprout::fixed_begin(cont) + I2))
return comp(*sprout::next(sprout::fixed_begin(cont), I1), *sprout::next(sprout::fixed_begin(cont), I2))
? stable_sort_impl_4(cont, comp, sprout::index_tuple<Indexes...>(), sprout::index_tuple<NextIndexes..., I1, I2, SortedIndexes...>(), sprout::index_tuple<>(), sprout::index_tuple<PreIndexes...>(), sprout::index_tuple<PostIndexes...>())
: stable_sort_impl_4(cont, comp, sprout::index_tuple<I1, Indexes...>(), sprout::index_tuple<SortedIndexes...>(), sprout::index_tuple<NextIndexes..., I2>(), sprout::index_tuple<PreIndexes...>(), sprout::index_tuple<PostIndexes...>())
;

View file

@ -6,6 +6,7 @@
#include <sprout/index_tuple.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_ITERATOR_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -29,12 +30,12 @@ namespace sprout {
result,
sprout::size(result),
(Indexes >= offset && Indexes < offset + size && Indexes < offset + input_size
? first + Indexes - offset == pos1
? sprout::next(first, Indexes - offset) == pos1
? *pos2
: first + Indexes - offset == pos2
: sprout::next(first, Indexes - offset) == pos2
? *pos1
: *(first + Indexes - offset)
: *(sprout::fixed_begin(result) + Indexes)
: *sprout::next(first, Indexes - offset)
: *sprout::next(sprout::fixed_begin(result), Indexes)
)...
);
}

View file

@ -6,6 +6,7 @@
#include <sprout/index_tuple.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include HDR_ITERATOR_SSCRISK_CEL_OR_SPROUT_DETAIL
@ -28,8 +29,8 @@ namespace sprout {
result,
sprout::size(result),
(Indexes >= offset && Indexes < offset + size && Indexes < offset + input_size
? op(*(first + Indexes - offset))
: *(sprout::fixed_begin(result) + Indexes)
? op(*sprout::next(first, Indexes - offset))
: *sprout::next(sprout::fixed_begin(result), Indexes)
)...
);
}
@ -75,8 +76,8 @@ namespace sprout {
result,
sprout::size(result),
(Indexes >= offset && Indexes < offset + size && Indexes < offset + input_size
? op(*(first1 + Indexes - offset), *(first2 + Indexes - offset))
: *(sprout::fixed_begin(result) + Indexes)
? op(*sprout::next(first1, Indexes - offset), *sprout::next(first2, Indexes - offset))
: *sprout::next(sprout::fixed_begin(result), Indexes)
)...
);
}

View file

@ -5,6 +5,7 @@
#include <sprout/config.hpp>
#include <sprout/fixed_container/traits.hpp>
#include <sprout/fixed_container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
namespace sprout {