Header file range/v3/algorithm/count.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/functional.hpp>

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

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

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

namespace ranges
{
    inline namespace v3
    {
        struct count_fn;
        
        inline namespace 
        {
            constexpr auto& count = static_const<with_braced_init_args<with_braced_init_args<count_fn>>>::value;
        }
    }
}

Class ranges::v3::count_fn

struct count_fn
{
    template <typename I, typename S, typename V, typename P = ident, int _concept_requires_35 = 42, typename std::enable_if<(_concept_requires_35==43)||(InputIterator<I>()&&Sentinel<S, I>()&&IndirectCallableRelation<equal_to, projected<I, P>, V const*>()), int>::type=0>
    iterator_difference_t<I> operator()(I begin, S end, V const& val, P proj_ = P{}) const;
    
    template <typename Rng, typename V, typename P = ident, typename I = range_iterator_t<Rng>, int _concept_requires_50 = 42, typename std::enable_if<(_concept_requires_50==43)||(InputRange<Rng>()&&IndirectCallableRelation<equal_to, projected<I, P>, V const*>()), int>::type=0>
    iterator_difference_t<I> operator()(Rng&& rng, V const& val, P proj = P{}) const;
};

@{


Variable ranges::v3::count

constexpr auto& count = static_const<with_braced_init_args<with_braced_init_args<count_fn>>>::value;

count_fn