Header file range/v3/algorithm/equal.hpp

#include <range/v3/range_fwd.hpp>

#include <range/v3/begin_end.hpp>

#include <range/v3/distance.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
    {
        struct equal_fn;
        
        inline namespace 
        {
            constexpr auto& equal = static_const<with_braced_init_args<equal_fn>>::value;
        }
    }
}

Class ranges::v3::equal_fn

struct equal_fn
{
    template <typename I0, typename S0, typename I1, typename C = equal_to, typename P0 = ident, typename P1 = ident, int _concept_requires_53 = 42, typename std::enable_if<(_concept_requires_53==43)||(Sentinel<S0, I0>()&&Comparable<I0, I1, C, P0, P1>()), int>::type=0>
    bool operator()(I0 begin0, S0 end0, I1 begin1, C pred_ = C{}, P0 proj0_ = P0{}, P1 proj1_ = P1{}) const;
    
    template <typename I0, typename S0, typename I1, typename S1, typename C = equal_to, typename P0 = ident, typename P1 = ident, int _concept_requires_71 = 42, typename std::enable_if<(_concept_requires_71==43)||(Sentinel<S0, I0>()&&Sentinel<S1, I1>()&&Comparable<I0, I1, C, P0, P1>()), int>::type=0>
    bool operator()(I0 begin0, S0 end0, I1 begin1, S1 end1, C pred_ = C{}, P0 proj0_ = P0{}, P1 proj1_ = P1{}) const;
    
    template <typename Rng0, typename I1Ref, typename C = equal_to, typename P0 = ident, typename P1 = ident, typename I0 = range_iterator_t<Rng0>, typename I1 = uncvref_t<I1Ref>, int _concept_requires_89 = 42, typename std::enable_if<(_concept_requires_89==43)||(Range<Rng0>()&&Iterator<I1>()&&Comparable<I0, I1, C, P0, P1>()), int>::type=0>
    bool operator()(Rng0&& rng0, I1Ref&& begin1, C pred_ = C{}, P0 proj0_ = P0{}, P1 proj1_ = P1{}) const;
    
    template <typename Rng0, typename Rng1, typename C = equal_to, typename P0 = ident, typename P1 = ident, typename I0 = range_iterator_t<Rng0>, typename I1 = range_iterator_t<Rng1>, int _concept_requires_104 = 42, typename std::enable_if<(_concept_requires_104==43)||(Range<Rng0>()&&Range<Rng1>()&&Comparable<I0, I1, C, P0, P1>()), int>::type=0>
    bool operator()(Rng0&& rng0, Rng1&& rng1, C pred_ = C{}, P0 proj0_ = P0{}, P1 proj1_ = P1{}) const;
};

@{


Variable ranges::v3::equal

constexpr auto& equal = static_const<with_braced_init_args<equal_fn>>::value;

equal_fn