fix container_traits for array-like classes

fix coding style algorithm/
This commit is contained in:
bolero-MURAKAMI 2012-09-29 17:10:46 +09:00
parent 06f1933220
commit 0c00166c5f
123 changed files with 1608 additions and 2224 deletions

View file

@ -17,13 +17,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename std::enable_if<
sprout::container_traits<Result>::static_size == sizeof...(Args),
typename sprout::fixed::result_of::algorithm<Result>::type
>::type merge_impl(
InputIterator1 first1,
InputIterator1 last1,
InputIterator2 first2,
InputIterator2 last2,
Result const& result,
Compare comp,
>::type
merge_impl(
InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
Result const& result, Compare comp,
typename sprout::container_traits<Result>::size_type size,
Args const&... args
)
@ -34,13 +32,11 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename std::enable_if<
sprout::container_traits<Result>::static_size != sizeof...(Args),
typename sprout::fixed::result_of::algorithm<Result>::type
>::type merge_impl(
InputIterator1 first1,
InputIterator1 last1,
InputIterator2 first2,
InputIterator2 last2,
Result const& result,
Compare comp,
>::type
merge_impl(
InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
Result const& result, Compare comp,
typename sprout::container_traits<Result>::size_type size,
Args const&... args
)
@ -49,11 +45,23 @@ namespace sprout {
? first1 != last1
? first2 != last2
? comp(*first2, *first1)
? sprout::fixed::detail::merge_impl(first1, last1, sprout::next(first2), last2, result, comp, size, args..., *first2)
: sprout::fixed::detail::merge_impl(sprout::next(first1), last1, first2, last2, result, comp, size, args..., *first1)
: sprout::fixed::detail::merge_impl(sprout::next(first1), last1, first2, last2, result, comp, size, args..., *first1)
? sprout::fixed::detail::merge_impl(
first1, last1, sprout::next(first2), last2, result, comp,
size, args..., *first2
)
: sprout::fixed::detail::merge_impl(
sprout::next(first1), last1, first2, last2, result, comp,
size, args..., *first1
)
: sprout::fixed::detail::merge_impl(
sprout::next(first1), last1, first2, last2, result, comp,
size, args..., *first1
)
: first2 != last2
? sprout::fixed::detail::merge_impl(first1, last1, sprout::next(first2), last2, result, comp, size, args..., *first2)
? sprout::fixed::detail::merge_impl(
first1, last1, sprout::next(first2), last2, result, comp,
size, args..., *first2
)
: sprout::detail::container_complate(result, args...)
: sprout::detail::container_complate(result, args...)
;
@ -63,44 +71,32 @@ namespace sprout {
// merge
//
template<typename InputIterator1, typename InputIterator2, typename Result, typename Compare>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type merge(
InputIterator1 first1,
InputIterator1 last1,
InputIterator2 first2,
InputIterator2 last2,
Result const& result,
Compare comp
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::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,
first1, last1,
first2, last2,
result, comp,
sprout::size(result)
);
}
//
// merge
//
template<typename InputIterator1, typename InputIterator2, typename Result>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type merge(
InputIterator1 first1,
InputIterator1 last1,
InputIterator2 first2,
InputIterator2 last2,
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
merge(
InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2,
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>(),
first1, last1,
first2, last2,
result, NS_SSCRISK_CEL_OR_SPROUT::less<typename sprout::container_traits<Result>::value_type>(),
sprout::size(result)
);
}