Large diffs are not rendered by default.

@@ -7,6 +7,7 @@
#include <sprout/container/functions.hpp>
#include <sprout/iterator/operation.hpp>
#include <sprout/algorithm/fixed/result_of.hpp>
#include <sprout/detail/container_complate.hpp>

namespace sprout {
namespace fixed {
@@ -24,7 +25,7 @@ namespace sprout {
Args const&... args
)
{
return sprout::remake<Result>(result, sprout::size(result), args...);
return sprout::remake<Result>(result, sprout::size(result), args..., value);
}
template<typename InputIterator, typename Result, typename... Args>
inline SPROUT_CONSTEXPR typename std::enable_if<
@@ -61,7 +62,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename std::enable_if<
sprout::container_traits<Result>::static_size != 0,
typename sprout::fixed::result_of::algorithm<Result>::type
>::type partial_sum_impl_1(
>::type partial_sum_impl(
InputIterator first,
InputIterator last,
Result const& result,
@@ -102,7 +103,7 @@ namespace sprout {
Args const&... args
)
{
return sprout::remake<Result>(result, sprout::size(result), args...);
return sprout::remake<Result>(result, sprout::size(result), args..., value);
}
template<typename InputIterator, typename Result, typename BinaryOperation, typename... Args>
inline SPROUT_CONSTEXPR typename std::enable_if<
@@ -141,7 +142,7 @@ namespace sprout {
inline SPROUT_CONSTEXPR typename std::enable_if<
sprout::container_traits<Result>::static_size != 0,
typename sprout::fixed::result_of::algorithm<Result>::type
>::type partial_sum_impl_1(
>::type partial_sum_impl(
InputIterator first,
InputIterator last,
Result const& result,
@@ -118,6 +118,18 @@ namespace sprout {
struct is_range_container<sprout::range::range_container<Iterator> >
: public std::true_type
{};

//
// make_range_container
//
template<typename Range>
inline SPROUT_CONSTEXPR sprout::range::range_container<typename sprout::range::lvalue_iterator<Range>::type>
make_range_container(Range&& range) {
return sprout::range::range_container<typename sprout::range::lvalue_iterator<Range>::type>(
sprout::begin(sprout::forward<Range>(range)),
sprout::end(sprout::forward<Range>(range))
);
}
} // namespace range

//
@@ -31,7 +31,7 @@ namespace sprout {
typedef typename sprout::range::lvalue_iterator<Range>::type type;
public:
static SPROUT_CONSTEXPR type pack(
typename sprout::container_traits<Range>::iterator found,
typename sprout::range::lvalue_iterator<Range>::type found,
Range&& range
)
{
@@ -44,7 +44,7 @@ namespace sprout {
typedef typename sprout::range::lvalue_range<Range>::type type;
public:
static SPROUT_CONSTEXPR type pack(
typename sprout::container_traits<Range>::iterator found,
typename sprout::range::lvalue_iterator<Range>::type found,
Range&& range
)
{
@@ -57,7 +57,7 @@ namespace sprout {
typedef typename sprout::range::lvalue_range<Range>::type type;
public:
static SPROUT_CONSTEXPR type pack(
typename sprout::container_traits<Range>::iterator found,
typename sprout::range::lvalue_iterator<Range>::type found,
Range&& range
)
{