Header file range/v3/algorithm/replace.hpp

#include <meta/meta.hpp>

#include <range/v3/range_fwd.hpp>

#include <range/v3/begin_end.hpp>

#include <range/v3/range_concepts.hpp>

#include <range/v3/range_traits.hpp>

#include <range/v3/utility/iterator_concepts.hpp>

#include <range/v3/utility/iterator_traits.hpp>

#include <range/v3/utility/functional.hpp>

#include <range/v3/utility/static_const.hpp>

namespace ranges
{
    inline namespace v3
    {
        template <typename I, typename T0, typename T1, typename P = ident>
        using Replaceable = meta::strict_and<InputIterator<I>, IndirectCallableRelation<equal_to, projected<I, P>, T0 const*>, Writable<I, T1 const&>>;
        
        struct replace_fn;
        
        inline namespace 
        {
            constexpr auto& replace = static_const<with_braced_init_args<replace_fn>>::value;
        }
    }
}

Class ranges::v3::replace_fn

struct replace_fn
{
    template <typename I, typename S, typename T0, typename T1, typename P = ident, int _concept_requires_42 = 42, typename std::enable_if<(_concept_requires_42==43)||(Replaceable<I, T0, T1, P>()&&Sentinel<S, I>()), int>::type=0>
    I operator()(I begin, S end, T0 const& old_value, T1 const& new_value, P proj_ = {}) const;
    
    template <typename Rng, typename T0, typename T1, typename P = ident, typename I = range_iterator_t<Rng>, int _concept_requires_54 = 42, typename std::enable_if<(_concept_requires_54==43)||(Replaceable<I, T0, T1, P>()&&Range<Rng>()), int>::type=0>
    range_safe_iterator_t<Rng> operator()(Rng&& rng, T0 const& old_value, T1 const& new_value, P proj = {}) const;
};

@{


Variable ranges::v3::replace

constexpr auto& replace = static_const<with_braced_init_args<replace_fn>>::value;

replace_fn