fix index_tuple

This commit is contained in:
bolero-MURAKAMI 2013-01-25 15:14:29 +09:00
parent 48f1b2d615
commit ee8602f6a3
42 changed files with 927 additions and 101 deletions

View file

@ -6,10 +6,11 @@
#include <sprout/container/traits.hpp>
#include <sprout/container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/iterator/merge_iterator.hpp>
#include <sprout/functional/less.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/pit.hpp>
#include <sprout/detail/container_complate.hpp>
#include HDR_FUNCTIONAL_SSCRISK_CEL_OR_SPROUT
namespace sprout {
namespace fixed {
@ -67,6 +68,43 @@ namespace sprout {
: sprout::detail::container_complate(result, args...)
;
}
template<typename InputIterator1, typename InputIterator2, typename Result, typename Compare>
inline SPROUT_CONSTEXPR typename std::enable_if<
sprout::is_fixed_container<Result>::value,
typename sprout::fixed::result_of::algorithm<Result>::type
>::type
merge(
InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
Result const& result, Compare comp
)
{
return sprout::fixed::detail::merge_impl(
first1, last1,
first2, last2,
result, comp,
sprout::size(result)
);
}
template<typename InputIterator1, typename InputIterator2, typename Result, typename Compare>
inline SPROUT_CONSTEXPR typename std::enable_if<
!sprout::is_fixed_container<Result>::value,
typename sprout::fixed::result_of::algorithm<Result>::type
>::type
merge(
InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
Result const& result, Compare comp
)
{
return sprout::remake<Result>(
result, sprout::size(result),
sprout::make_merge_iterator(first1, last1, first2, last2, comp),
sprout::make_merge_iterator(last1, last1, last2, last2, comp)
);
}
} // namespace detail
//
// merge
@ -79,12 +117,7 @@ namespace sprout {
Result const& result, Compare comp
)
{
return sprout::fixed::detail::merge_impl(
first1, last1,
first2, last2,
result, comp,
sprout::size(result)
);
return sprout::fixed::detail::merge(first1, last1, first2, last2, result, comp);
}
template<typename InputIterator1, typename InputIterator2, typename Result>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
@ -94,12 +127,7 @@ namespace sprout {
Result const& result
)
{
return sprout::fixed::detail::merge_impl(
first1, last1,
first2, last2,
result, NS_SSCRISK_CEL_OR_SPROUT::less<typename sprout::container_traits<Result>::value_type>(),
sprout::size(result)
);
return sprout::fixed::merge(first1, last1, first2, last2, result, sprout::less<>());
}
template<typename Result, typename InputIterator1, typename InputIterator2, typename Compare>