mirror of
https://github.com/bolero-MURAKAMI/Sprout.git
synced 2025-07-12 14:54:10 +00:00
fix support for STL container: some algorithms
This commit is contained in:
parent
ace6acad69
commit
a9cd556f8e
28 changed files with 911 additions and 106 deletions
|
@ -7,6 +7,7 @@
|
|||
#include <sprout/container/traits.hpp>
|
||||
#include <sprout/container/functions.hpp>
|
||||
#include <sprout/iterator/transform_iterator.hpp>
|
||||
#include <sprout/iterator/replace_iterator.hpp>
|
||||
#include <sprout/range/adaptor/detail/adapted_range_default.hpp>
|
||||
#include <sprout/range/algorithm/copy.hpp>
|
||||
#include <sprout/type_traits/lvalue_reference.hpp>
|
||||
|
@ -15,25 +16,6 @@
|
|||
|
||||
namespace sprout {
|
||||
namespace adaptors {
|
||||
namespace detail {
|
||||
template<typename T>
|
||||
class replace_value {
|
||||
public:
|
||||
typedef T const& result_type;
|
||||
typedef T const& argument_type;
|
||||
private:
|
||||
T old_;
|
||||
T new_;
|
||||
public:
|
||||
SPROUT_CONSTEXPR replace_value(T const& old_value, T const& new_value)
|
||||
: old_(old_value)
|
||||
, new_(new_value)
|
||||
{}
|
||||
SPROUT_CONSTEXPR T operator()(T const& value) const {
|
||||
return (value == old_) ? new_ : value;
|
||||
}
|
||||
};
|
||||
} // namespace detail
|
||||
//
|
||||
// replaced_range
|
||||
//
|
||||
|
@ -42,7 +24,7 @@ namespace sprout {
|
|||
: public sprout::adaptors::detail::adapted_range_default<
|
||||
Range,
|
||||
sprout::transform_iterator<
|
||||
sprout::adaptors::detail::replace_value<typename sprout::container_traits<Range>::value_type>,
|
||||
sprout::replace_value<typename sprout::container_traits<Range>::value_type>,
|
||||
typename sprout::container_traits<Range>::iterator
|
||||
>
|
||||
>
|
||||
|
@ -51,7 +33,7 @@ namespace sprout {
|
|||
typedef sprout::adaptors::detail::adapted_range_default<
|
||||
Range,
|
||||
sprout::transform_iterator<
|
||||
sprout::adaptors::detail::replace_value<typename sprout::container_traits<Range>::value_type>,
|
||||
sprout::replace_value<typename sprout::container_traits<Range>::value_type>,
|
||||
typename sprout::container_traits<Range>::iterator
|
||||
>
|
||||
> base_type;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue