Header file range/v3/view/all.hpp

#include <meta/meta.hpp>

#include <range/v3/range_fwd.hpp>

#include <range/v3/range_concepts.hpp>

#include <range/v3/iterator_range.hpp>

#include <range/v3/begin_end.hpp>

#include <range/v3/size.hpp>

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

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

namespace ranges
{
    inline namespace v3
    {
        namespace view
        {
            struct all_fn
            : pipeable<struct ranges::v3::view::all_fn>
            {
                template <typename T, int _concept_requires_85 = 42, typename std::enable_if<(_concept_requires_85==43)||(Range<T>()), int>::type=0>
                decltype(all_fn::from_range(std::forward<T>(t), view_concept<T>())) operator()(T&& t) const;
                
                template <typename T, int _concept_requires_93 = 42, typename std::enable_if<(_concept_requires_93==43)||(Range<T&>()), int>::type=0>
                ranges::reference_wrapper<T> operator()(std::reference_wrapper<T> ref) const;
            };
            
            inline namespace 
            {
                constexpr auto& all = static_const<all_fn>::value;
            }
            
            template <typename Rng>
            using all_t = meta::_t<std::decay<decltype(all(std::declval<Rng>()))>>;
        }
    }
}