Header file range/v3/to_container.hpp

#include <meta/meta.hpp>

#include <range/v3/range_fwd.hpp>

#include <range/v3/range_concepts.hpp>

#include <range/v3/range_traits.hpp>

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

#include <range/v3/action/concepts.hpp>

namespace std{}

namespace ranges
{
    inline namespace v3
    {
        namespace detail
        {
            template <typename Rng, typename Cont, typename I = range_common_iterator_t<Rng>>
            using ConvertibleToContainer = meta::strict_and<Range<Cont>, meta::not_<View<Cont>>, Movable<Cont>, ConvertibleTo<range_value_t<Rng>, range_value_t<Cont>>, Constructible<Cont, I, I>>;
            
            template <typename ContainerMetafunctionClass>
            struct to_container_fn
            : pipeable<to_container_fn<ContainerMetafunctionClass> >
            {
                template <typename Rng, typename Cont = meta::invoke<ContainerMetafunctionClass, range_value_t<Rng>>, int _concept_requires_86 = 42, typename std::enable_if<(_concept_requires_86==43)||(Range<Rng>()&&detail::ConvertibleToContainer<Rng, Cont>()), int>::type=0>
                Cont operator()(Rng&& rng) const;
            };
        }
        
        inline namespace 
        {
            constexpr auto& to_vector = static_const<detail::to_container_fn<meta::quote<std::vector>>>::value;
        }
        
        template <template <typename> typename ContT>
        detail::to_container_fn<meta::quote<ContT>> to_();
        
        template <template <typename> typename ContT, typename Rng, typename Cont = meta::invoke<meta::quote<ContT>, range_value_t<Rng>>, int _concept_requires_115 = 42, typename std::enable_if<(_concept_requires_115==43)||(Range<Rng>()&&detail::ConvertibleToContainer<Rng, Cont>()), int>::type=0>
        Cont to_(Rng&& rng);
        
        template <template <typename> typename ContT, typename T, typename Cont = meta::invoke<meta::quote<ContT>, T>, int _concept_requires_124 = 42, typename std::enable_if<(_concept_requires_124==43)||(detail::ConvertibleToContainer<std::initializer_list<T>, Cont>()), int>::type=0>
        Cont to_(std::initializer_list<T> list);
        
        template <typename Cont>
        detail::to_container_fn<meta::id<Cont>> to_();
        
        template <typename Cont, typename Rng, int _concept_requires_139 = 42, typename std::enable_if<(_concept_requires_139==43)||(Range<Rng>()&&detail::ConvertibleToContainer<Rng, Cont>()), int>::type=0>
        Cont to_(Rng&& rng);
        
        template <typename Cont, typename T, int _concept_requires_147 = 42, typename std::enable_if<(_concept_requires_147==43)||(detail::ConvertibleToContainer<std::initializer_list<T>, Cont>()), int>::type=0>
        Cont to_(std::initializer_list<T> list);
    }
}

Function template ranges::v3::to_<ContT>

template <template <typename> typename ContT>
detail::to_container_fn<meta::quote<ContT>> to_();

For initializing a container of the specified type with the elements of an Range