mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-02 14:04:20 +00:00
fix index_tuple
This commit is contained in:
parent
48f1b2d615
commit
ee8602f6a3
42 changed files with 927 additions and 101 deletions
|
@ -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>
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/iterator/operation.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 {
|
||||
|
@ -72,6 +72,25 @@ 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
|
||||
set_difference(
|
||||
InputIterator1 first1, InputIterator1 last1,
|
||||
InputIterator2 first2, InputIterator2 last2,
|
||||
Result const& result, Compare comp
|
||||
)
|
||||
{
|
||||
return sprout::fixed::detail::set_difference_impl(
|
||||
first1, last1,
|
||||
first2, last2,
|
||||
result, comp,
|
||||
sprout::size(result)
|
||||
);
|
||||
}
|
||||
} // namespace detail
|
||||
//
|
||||
// set_difference
|
||||
|
@ -84,12 +103,7 @@ namespace sprout {
|
|||
Result const& result, Compare comp
|
||||
)
|
||||
{
|
||||
return sprout::fixed::detail::set_difference_impl(
|
||||
first1, last1,
|
||||
first2, last2,
|
||||
result, comp,
|
||||
sprout::size(result)
|
||||
);
|
||||
return sprout::fixed::detail::set_difference(first1, last1, first2, last2, result, comp);
|
||||
}
|
||||
template<typename InputIterator1, typename InputIterator2, typename Result>
|
||||
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
|
||||
|
@ -99,12 +113,7 @@ namespace sprout {
|
|||
Result const& result
|
||||
)
|
||||
{
|
||||
return sprout::fixed::detail::set_difference_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::set_difference(first1, last1, first2, last2, result, sprout::less<>());
|
||||
}
|
||||
|
||||
template<typename Result, typename InputIterator1, typename InputIterator2, typename Compare>
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/iterator/operation.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 {
|
||||
|
@ -72,6 +72,25 @@ 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
|
||||
set_intersection(
|
||||
InputIterator1 first1, InputIterator1 last1,
|
||||
InputIterator2 first2, InputIterator2 last2,
|
||||
Result const& result, Compare comp
|
||||
)
|
||||
{
|
||||
return sprout::fixed::detail::set_intersection_impl(
|
||||
first1, last1,
|
||||
first2, last2,
|
||||
result, comp,
|
||||
sprout::size(result)
|
||||
);
|
||||
}
|
||||
} // namespace detail
|
||||
//
|
||||
// set_intersection
|
||||
|
@ -84,12 +103,7 @@ namespace sprout {
|
|||
Result const& result, Compare comp
|
||||
)
|
||||
{
|
||||
return sprout::fixed::detail::set_intersection_impl(
|
||||
first1, last1,
|
||||
first2, last2,
|
||||
result, comp,
|
||||
sprout::size(result)
|
||||
);
|
||||
return sprout::fixed::detail::set_intersection(first1, last1, first2, last2, result, comp);
|
||||
}
|
||||
template<typename InputIterator1, typename InputIterator2, typename Result>
|
||||
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
|
||||
|
@ -99,12 +113,7 @@ namespace sprout {
|
|||
Result const& result
|
||||
)
|
||||
{
|
||||
return sprout::fixed::detail::set_intersection_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::set_intersection(first1, last1, first2, last2, result, sprout::less<>());
|
||||
}
|
||||
|
||||
template<typename Result, typename InputIterator1, typename InputIterator2, typename Compare>
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/iterator/operation.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 {
|
||||
|
@ -72,6 +72,25 @@ 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
|
||||
set_symmetric_difference(
|
||||
InputIterator1 first1, InputIterator1 last1,
|
||||
InputIterator2 first2, InputIterator2 last2,
|
||||
Result const& result, Compare comp
|
||||
)
|
||||
{
|
||||
return sprout::fixed::detail::set_symmetric_difference_impl(
|
||||
first1, last1,
|
||||
first2, last2,
|
||||
result, comp,
|
||||
sprout::size(result)
|
||||
);
|
||||
}
|
||||
} // namespace detail
|
||||
//
|
||||
// set_symmetric_difference
|
||||
|
@ -84,12 +103,7 @@ namespace sprout {
|
|||
Result const& result, Compare comp
|
||||
)
|
||||
{
|
||||
return sprout::fixed::detail::set_symmetric_difference_impl(
|
||||
first1, last1,
|
||||
first2, last2,
|
||||
result, comp,
|
||||
sprout::size(result)
|
||||
);
|
||||
return sprout::fixed::detail::set_symmetric_difference(first1, last1, first2, last2, result, comp);
|
||||
}
|
||||
template<typename InputIterator1, typename InputIterator2, typename Result>
|
||||
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
|
||||
|
@ -99,12 +113,7 @@ namespace sprout {
|
|||
Result const& result
|
||||
)
|
||||
{
|
||||
return sprout::fixed::detail::set_symmetric_difference_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::set_symmetric_difference(first1, last1, first2, last2, result, sprout::less<>());
|
||||
}
|
||||
|
||||
template<typename Result, typename InputIterator1, typename InputIterator2, typename Compare>
|
||||
|
|
|
@ -6,10 +6,11 @@
|
|||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/iterator/operation.hpp>
|
||||
#include <sprout/iterator/set_union_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 {
|
||||
|
@ -72,6 +73,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
|
||||
set_union(
|
||||
InputIterator1 first1, InputIterator1 last1,
|
||||
InputIterator2 first2, InputIterator2 last2,
|
||||
Result const& result, Compare comp
|
||||
)
|
||||
{
|
||||
return sprout::fixed::detail::set_union_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
|
||||
set_union(
|
||||
InputIterator1 first1, InputIterator1 last1,
|
||||
InputIterator2 first2, InputIterator2 last2,
|
||||
Result const& result, Compare comp
|
||||
)
|
||||
{
|
||||
return sprout::remake<Result>(
|
||||
result, sprout::size(result),
|
||||
sprout::make_set_union_iterator(first1, last1, first2, last2, comp),
|
||||
sprout::make_set_union_iterator(last1, last1, last2, last2, comp)
|
||||
);
|
||||
}
|
||||
} // namespace detail
|
||||
//
|
||||
// set_union
|
||||
|
@ -84,12 +122,7 @@ namespace sprout {
|
|||
Result const& result, Compare comp
|
||||
)
|
||||
{
|
||||
return sprout::fixed::detail::set_union_impl(
|
||||
first1, last1,
|
||||
first2, last2,
|
||||
result, comp,
|
||||
sprout::size(result)
|
||||
);
|
||||
return sprout::fixed::detail::set_union(first1, last1, first2, last2, result, comp);
|
||||
}
|
||||
template<typename InputIterator1, typename InputIterator2, typename Result>
|
||||
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
|
||||
|
@ -99,12 +132,7 @@ namespace sprout {
|
|||
Result const& result
|
||||
)
|
||||
{
|
||||
return sprout::fixed::detail::set_union_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::set_union(first1, last1, first2, last2, result, sprout::less<>());
|
||||
}
|
||||
|
||||
template<typename Result, typename InputIterator1, typename InputIterator2, typename Compare>
|
||||
|
|
|
@ -61,6 +61,12 @@ namespace sprout {
|
|||
;
|
||||
}
|
||||
|
||||
template<typename Result, typename InputIterator>
|
||||
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
|
||||
unique_copy(InputIterator first, InputIterator last) {
|
||||
return sprout::fixed::unique_copy(first, last, sprout::pit<Result>());
|
||||
}
|
||||
|
||||
namespace detail {
|
||||
template<typename InputIterator, typename Result, typename BinaryPredicate, typename Head, typename... Args>
|
||||
inline SPROUT_CONSTEXPR typename std::enable_if<
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue