fix support for STL container: some algorithms

This commit is contained in:
bolero-MURAKAMI 2013-01-17 03:53:17 +09:00
parent ace6acad69
commit a9cd556f8e
28 changed files with 911 additions and 106 deletions

View file

@ -18,6 +18,12 @@ namespace sprout {
copy(Input const& input, Result const& result) {
return sprout::fixed::copy(sprout::begin(input), sprout::end(input), result);
}
template<typename Result, typename Input>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
copy(Input const& input) {
return sprout::fixed::copy<Result>(sprout::begin(input), sprout::end(input));
}
} // namespace fixed
using sprout::range::fixed::copy;

View file

@ -18,6 +18,12 @@ namespace sprout {
copy_backward(Input const& input, Result const& result) {
return sprout::fixed::copy_backward(sprout::begin(input), sprout::end(input), result);
}
template<typename Result, typename Input>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
copy_backward(Input const& input) {
return sprout::fixed::copy_backward<Result>(sprout::begin(input), sprout::end(input));
}
} // namespace fixed
using sprout::range::fixed::copy_backward;

View file

@ -18,6 +18,12 @@ namespace sprout {
copy_if(Input const& input, Result const& result, Predicate pred) {
return sprout::fixed::copy_if(sprout::begin(input), sprout::end(input), result);
}
template<typename Result, typename Input, typename Predicate>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
copy_if(Input const& input, Predicate pred) {
return sprout::fixed::copy_if<Result>(sprout::begin(input), sprout::end(input));
}
} // namespace fixed
using sprout::range::fixed::copy_if;

View file

@ -18,6 +18,12 @@ namespace sprout {
replace_copy(Input const& input, Result const& result, T const& old_value, T const& new_value) {
return sprout::fixed::replace_copy(sprout::begin(input), sprout::end(input), result, old_value, new_value);
}
template<typename Result, typename Input, typename T>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
replace_copy(Input const& input, T const& old_value, T const& new_value) {
return sprout::fixed::replace_copy<Result>(sprout::begin(input), sprout::end(input), old_value, new_value);
}
} // namespace fixed
using sprout::range::fixed::replace_copy;

View file

@ -18,6 +18,12 @@ namespace sprout {
replace_copy_if(Input const& input, Result const& result, Predicate pred, T const& new_value) {
return sprout::fixed::replace_copy_if(sprout::begin(input), sprout::end(input), result, pred, new_value);
}
template<typename Result, typename Input, typename T, typename Predicate>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
replace_copy_if(Input const& input, Predicate pred, T const& new_value) {
return sprout::fixed::replace_copy_if<Result>(sprout::begin(input), sprout::end(input), pred, new_value);
}
} // namespace fixed
using sprout::range::fixed::replace_copy_if;

View file

@ -23,6 +23,17 @@ namespace sprout {
transform(Input1 const& input1, Input2 const& input2, Result const& result, BinaryOperation op) {
return sprout::fixed::transform(sprout::begin(input1), sprout::end(input1), sprout::begin(input2), result, op);
}
template<typename Result, typename Input, typename UnaryOperation>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
transform(Input const& input, UnaryOperation op) {
return sprout::fixed::transform<Result>(sprout::begin(input), sprout::end(input), op);
}
template<typename Result, typename Input1, typename Input2, typename BinaryOperation>
inline SPROUT_CONSTEXPR typename sprout::fixed::result_of::algorithm<Result>::type
transform(Input1 const& input1, Input2 const& input2, BinaryOperation op) {
return sprout::fixed::transform<Result>(sprout::begin(input1), sprout::end(input1), sprout::begin(input2), op);
}
} // namespace fixed
using sprout::range::fixed::transform;