Header file range/v3/view/single.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/view_facade.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
    {
        template <typename Val>
        struct single_view;
        
        namespace view
        {
            struct single_fn
            {
                template <typename Val, int _concept_requires_101 = 42, typename std::enable_if<(_concept_requires_101==43)||(SemiRegular<Val>()), int>::type=0>
                single_view<Val> operator()(Val value) const;
                
                template <typename Arg, typename Val = detail::decay_t<Arg>, int _concept_requires_109 = 42, typename std::enable_if<(_concept_requires_109==43)||(!(SemiRegular<Val>()&&Constructible<Val, Arg&&>())), int>::type=0>
                void operator()(Arg&&) const;
            };
            
            inline namespace 
            {
                constexpr auto& single = static_const<single_fn>::value;
            }
        }
    }
}

Class template ranges::v3::single_view<Val>

template <typename Val>
struct single_view
: view_facade<single_view<Val>, (enum ranges::v3::cardinality)1>
{
    single_view() = default;
    
    explicit constexpr single_view(Val value);
    
    constexpr std::size_t size() const;
};

@{