VCCC  2024.05
VisualCamp Common C++ library
ranges

Ranges library. More...

Detailed Description

Modules

 ranges::to
 constructs a new non-view object from an input range
 
 ranges::cartesian_product_view, views::cartesian_product
 a view consisting of tuples of results calculated by the n-ary cartesian product of the adapted views
 
 ranges::empty_view, views::empty
 an empty view with no elements
 
 ranges::iota_view, views::iota
 a view consisting of a sequence generated by repeatedly incrementing an initial value
 
 ranges::keys_view, views::keys
 takes a view consisting of tuple-like values and produces a view of the first elements of each pair
 
 ranges::single_view, views::single
 a view that contains a single element of a specified value
 
 ranges::values_view, views::values
 takes a view consisting of tuple-like values and produces a view of the second elements of each tuple
 

Classes

struct  bidirectional_range< T >
 specifies a range whose iterator type satisfies bidirectional_iterator More...
 
struct  borrowed_iterator< R >
 
struct  borrowed_range< R >
 
struct  borrowed_subrange< R >
 
struct  common_range< T >
 
struct  const_iterator< T >
 
struct  const_sentinel< R >
 
struct  constant_range< T >
 specifies the requirements for a range to be safely convertible to a view More...
 
struct  contiguous_range< T >
 specifies a range whose iterator type satisfies contiguous_iterator More...
 
struct  dangling
 a placeholder type indicating that an iterator or a subrange should not be returned since it would be dangling More...
 
struct  disabled_sized_range< T >
 
struct  enable_borrowed_range< R >
 
struct  enable_view< T >
 The enable_view variable template is used to indicate whether a range is a view. More...
 
struct  forward_range< T >
 specifies a range whose iterator type satisfies forward_iterator More...
 
struct  from_range_t
 
struct  input_range< T >
 specifies a range whose iterator type satisfies input_iterator More...
 
class  movable_box< T >
 
class  non_propagating_cache< T >
 
struct  output_range< R, T >
 
struct  random_access_range< T >
 specifies a range whose iterator type satisfies random_access_iterator More...
 
struct  range< T >
 specifies that a type is a range, that is, it provides a begin iterator and an end sentinel More...
 
class  range_adaptor< Niebloid, Args >
 
struct  is_range_adaptor_closure< T >
 check if type satisfies range adaptor closure object More...
 
struct  range_adaptor_closure< Derived >
 helper base class template for defining a range adaptor closure object More...
 
struct  range_const_reference< R >
 
struct  range_difference< R >
 
struct  range_rvalue_reference< R >
 
struct  simple_view< R, bool >
 
struct  simple_view< R, false >
 
struct  sized_range< T >
 specifies that a range knows its size in constant time More...
 
class  subrange< I, S, K >
 
struct  enable_borrowed_range< subrange< I, S, K > >
 
struct  view< T >
 specifies that a range is a view, that is, it has constant time copy/move/assignment More...
 
struct  view_base
 Deriving from view_base enables range types to model view. More...
 
class  view_interface< Derived >
 helper class template for defining a view, using the curiously recurring template pattern More...
 
struct  viewable_range< T >
 specifies the requirements for a range to be safely convertible to a view More...
 
class  as_const_view< V >
 
struct  enable_borrowed_range< as_const_view< T > >
 
class  basic_istream_view< Val, CharT, Traits >
 
class  common_view< V >
 Adapts a given view with different types for iterator/sentinel pair into a view that is also a common_range. A common_view always has the same iterator/sentinel type. More...
 
struct  enable_borrowed_range< common_view< V > >
 
struct  concat_view< Rngs >
 
struct  concat_view< Rngs >::iterator< IsConst >
 
struct  concat_view< Rngs >::sentinel< Const >
 
struct  concat_with_view< Pattern, Rngs >
 
struct  concat_with_view< Pattern, Rngs >::iterator< IsConst >
 
struct  concat_with_view< Pattern, Rngs >::sentinel< Const >
 
class  drop_view< V >
 
struct  enable_borrowed_range< drop_view< T > >
 
class  drop_while_view< V, Pred >
 
struct  enable_borrowed_range< drop_while_view< T, Pred > >
 
class  elements_view< V, N >
 
struct  enable_borrowed_range< elements_view< V, N > >
 
class  enumerate_view< V, Tuple >
 
struct  enable_borrowed_range< enumerate_view< View > >
 
class  filter_view< V, Pred >
 
class  join_view< V >
 
class  join_with_view< V, Pattern >
 
class  repeat_view< W, Bound >
 
class  reverse_view< V >
 A range adaptor that represents a view of underlying view with reversed order. More...
 
struct  enable_borrowed_range< reverse_view< T > >
 
class  split_view< V, Pattern >
 split_view takes a view and a delimiter, and splits the view into subranges on the delimiter. More...
 
class  take_view< V >
 
struct  enable_borrowed_range< take_view< T > >
 
class  take_while_view< V, Pred >
 
class  transform_view< V, F >
 
class  zip_transform_view< F, Views >
 
class  zip_view< Views >
 

Typedefs

template<class I1 , class I2 , class O >
using set_intersection_result = ranges::in_in_out_result< I1, I2, O >
 
template<typename R >
using borrowed_iterator_t = typename borrowed_iterator< R >::type
 
template<typename R >
using borrowed_subrange_t = typename borrowed_subrange< R >::type
 
template<typename T >
using const_iterator_t = typename const_iterator< T >::type
 
template<typename R >
using const_sentinel_t = typename const_sentinel< R >::type
 
template<typename T >
using iterator_t = typename ranges::iterator< T >::type
 
template<typename R >
using range_const_reference_t = typename range_const_reference< R >::type
 Used to obtain the reference type of the iterator type of range type R. More...
 
template<typename R >
using range_difference_t = typename range_difference< R >::type
 Used to obtain the difference type of the iterator type of range type R. More...
 
template<typename R >
using range_key_t = typename range_key< R >::type
 
template<typename R >
using range_mapped_t = typename range_mapped< R >::type
 
template<typename R >
using range_reference_t = typename range_reference< R >::type
 Used to obtain the reference type of the iterator type of range type R. More...
 
template<typename R >
using range_rvalue_reference_t = typename range_rvalue_reference< R >::type
 Used to obtain the rvalue reference type of the iterator type of range type R. More...
 
template<typename R >
using range_size_t = typename range_size< R >::type
 Used to obtain the size type of the sized_range type R. More...
 
template<typename R >
using range_value_t = typename range_value< R >::type
 Used to obtain the value type of the iterator type of range type R. More...
 
template<typename R >
using sentinel_t = typename sentinel< R >::type
 
template<typename R >
using all_t = typename detail::all_t_impl< R >::type
 Calculates the suitable view type of a viewable_range type. More...
 
template<typename Val >
using istream_view = basic_istream_view< Val, char >
 
template<typename Val >
using wistream_view = basic_istream_view< Val, wchar_t >
 
using iterator_category = input_iterator_tag
 
using iterator_concept = std::conditional_t< conjunction< random_access_range< Rngs >... >::value, random_access_iterator_tag, std::conditional_t< conjunction< bidirectional_range< Rngs >... >::value, bidirectional_iterator_tag, std::conditional_t< conjunction< forward_range< Rngs >... >::value, forward_iterator_tag, input_iterator_tag > >>
 
using value_type = common_type_t< range_value_t< maybe_const< IsConst, Rngs > >... >
 
using difference_type = common_type_t< range_difference_t< Rngs >... >
 
using reference = common_reference_t< range_reference_t< maybe_const< IsConst, Rngs > >... >
 
using pointer = void
 
using iterator_category = input_iterator_tag
 
using iterator_concept = std::conditional_t< conjunction< random_access_range< Rngs >... >::value, random_access_iterator_tag, std::conditional_t< conjunction< bidirectional_range< Rngs >... >::value, bidirectional_iterator_tag, std::conditional_t< conjunction< forward_range< Rngs >... >::value, forward_iterator_tag, input_iterator_tag > >>
 
using value_type = common_type_t< range_value_t< maybe_const< IsConst, Rngs > >... >
 
using difference_type = common_type_t< range_difference_t< Rngs >... >
 
using reference = common_reference_t< range_reference_t< maybe_const< IsConst, Rngs > >... >
 
using pointer = void
 

Enumerations

enum class  subrange_kind : bool { unsized , sized }
 

Functions

template<typename T >
constexpr auto as_const_pointer (const T *p) noexcept
 
template<typename R , std::enable_if_t< input_range< R >::value, int > = 0>
constexpr auto & possibly_const_range (R &r) noexcept
 
template<typename I , typename S , std::enable_if_t< conjunction< input_or_output_iterator< I >, sentinel_for< S, I >>::value, int > = 0>
constexpr subrange< I, S > make_subrange (I i, S s)
 
template<typename I , typename S , std::enable_if_t< conjunction< input_or_output_iterator< I >, sentinel_for< S, I >>::value, int > = 0>
constexpr subrange< I, S, subrange_kind::sizedmake_subrange (I i, S s, detail::make_unsigned_like_t< iter_difference_t< I >> n)
 
template<typename R , std::enable_if_t< borrowed_range< R >::value, int > = 0>
constexpr subrange< iterator_t< R >, sentinel_t< R >,(sized_range< R >::value||sized_sentinel_for< sentinel_t< R >, iterator_t< R >>::value) ? subrange_kind::sized :subrange_kind::unsizedmake_subrange (R &&r)
 
template<typename R , std::enable_if_t< borrowed_range< R >::value, int > = 0>
constexpr subrange< iterator_t< R >, sentinel_t< R >, subrange_kind::sizedmake_subrange (R &&r, detail::make_unsigned_like_t< range_difference_t< R >> n)
 
template<std::size_t N, typename I , typename S , subrange_kind K, std::enable_if_t<((N==0 &&copyable< I >::value)||N==1), int > = 0>
constexpr auto get (const subrange< I, S, K > &r)
 
template<std::size_t N, typename I , typename S , subrange_kind K, std::enable_if_t<(N< 2), int > = 0>
constexpr auto get (subrange< I, S, K > &&r)
 
template<typename R , std::enable_if_t< viewable_range< R >::value, int > = 0>
constexpr common_view< views::all_t< R > > make_common_view (R &&r)
 
 sentinel ()=default
 
template<bool AntiConst, std::enable_if_t< conjunction< bool_constant<((Const !=AntiConst) &&Const)>, convertible_to< sentinel_t< BackBase >, sentinel_t< Base >> >::value, int > = 0>
constexpr sentinel (sentinel< AntiConst > that)
 
template<typename I , std::size_t N>
void operator() (I &it, in_place_index_t< N >)
 
template<typename U >
void operator() (U &, in_place_index_t< variant_npos >)
 
template<typename I >
void operator() (I &it, in_place_index_t< 0 >)
 
template<typename I , std::size_t N, std::enable_if_t< conjunction< bool_constant<(N !=0)>, bidirectional_iterator< I > >::value, int > = 0>
void operator() (I &it, in_place_index_t< N >)
 
template<typename U >
void operator() (U &, in_place_index_t< variant_npos >)
 
template<typename I , std::enable_if_t< random_access_iterator< I >::value, int > = 0>
void operator() (I &it, in_place_index_t< cranges - 1 >)
 
template<typename I , std::size_t N, std::enable_if_t< random_access_iterator< I >::value, int > = 0>
void operator() (I &it, in_place_index_t< N >)
 
template<typename U >
void operator() (U &, in_place_index_t< variant_npos >)
 
template<typename I , std::enable_if_t< random_access_iterator< I >::value, int > = 0>
void operator() (I &it, in_place_index_t< 0 >)
 
template<typename I , std::size_t N, std::enable_if_t< random_access_iterator< I >::value, int > = 0>
void operator() (I &it, in_place_index_t< N >)
 
template<typename U >
void operator() (U &, in_place_index_t< variant_npos >)
 
 iterator ()=default
 
template<std::size_t I, typename It >
constexpr iterator (Parent *parent, in_place_index_t< I >, It &&it)
 
template<bool Other, std::enable_if_t< conjunction< bool_constant<(Other !=IsConst &&IsConst)> >::value, int > = 0>
constexpr iterator (iterator< Other > that)
 
constexpr decltype(auto) operator* () const
 
constexpr bool equal (const sentinel< IsConst > &pos) const
 
constexpr iteratoroperator++ ()
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, negation< forward_range< Rngs >>... >::value, int > = 0>
constexpr void operator++ (int)
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, bidirectional_range< Rngs >... >::value, int > = 0>
constexpr iteratoroperator-- ()
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, bidirectional_range< Rngs >... >::value, int > = 0>
constexpr iteratoroperator-- (int)
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, random_access_range< Rngs >... >::value, int > = 0>
constexpr iteratoroperator+= (difference_type n)
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, random_access_range< Rngs >... >::value, int > = 0>
constexpr iteratoroperator-= (difference_type n)
 
 concat_view ()=default
 
 concat_view (Rngs... rngs)
 
constexpr auto begin ()
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, range< const Rngs >... >::value, int > = 0>
constexpr iterator< true > begin () const
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, common_range< Rngs >... >::value, int > = 0>
constexpr auto end ()
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, range< const Rngs >... >::value, int > = 0>
constexpr auto end () const
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, sized_range< Rngs >... >::value, int > = 0>
constexpr auto size ()
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, sized_range< const Rngs >... >::value, int > = 0>
constexpr auto size () const
 
 sentinel ()=default
 
template<bool AntiConst, std::enable_if_t< conjunction< bool_constant<((Const !=AntiConst) &&Const)>, convertible_to< sentinel_t< BackBase >, sentinel_t< Base >> >::value, int > = 0>
constexpr sentinel (sentinel< AntiConst > that)
 
template<typename I , std::size_t N>
void operator() (I &it, in_place_index_t< N >)
 
template<typename U >
void operator() (U &, in_place_index_t< variant_npos >)
 
template<typename I >
void operator() (I &it, in_place_index_t< 0 >)
 
template<typename I , std::size_t N, std::enable_if_t< conjunction< bool_constant<(N !=0)>, bidirectional_iterator< I > >::value, int > = 0>
void operator() (I &it, in_place_index_t< N >)
 
template<typename U >
void operator() (U &, in_place_index_t< variant_npos >)
 
template<typename I , std::enable_if_t< random_access_iterator< I >::value, int > = 0>
void operator() (I &it, in_place_index_t< cranges - 1 >)
 
template<typename I , std::size_t N, std::enable_if_t< random_access_iterator< I >::value, int > = 0>
void operator() (I &it, in_place_index_t< N >)
 
template<typename U >
void operator() (U &, in_place_index_t< variant_npos >)
 
template<typename I , std::enable_if_t< random_access_iterator< I >::value, int > = 0>
void operator() (I &it, in_place_index_t< 0 >)
 
template<typename I , std::size_t N, std::enable_if_t< random_access_iterator< I >::value, int > = 0>
void operator() (I &it, in_place_index_t< N >)
 
template<typename U >
void operator() (U &, in_place_index_t< variant_npos >)
 
 iterator ()=default
 
template<std::size_t I, typename It >
constexpr iterator (Parent *parent, in_place_index_t< I >, It &&it)
 
template<bool Other, std::enable_if_t< conjunction< bool_constant<(Other !=IsConst &&IsConst)> >::value, int > = 0>
constexpr iterator (iterator< Other > that)
 
constexpr decltype(auto) operator* () const
 
constexpr bool equal (const sentinel< IsConst > &pos) const
 
constexpr iteratoroperator++ ()
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, negation< forward_range< Rngs >>... >::value, int > = 0>
constexpr void operator++ (int)
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, bidirectional_range< Rngs >... >::value, int > = 0>
constexpr iteratoroperator-- ()
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, bidirectional_range< Rngs >... >::value, int > = 0>
constexpr iteratoroperator-- (int)
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, random_access_range< Rngs >... >::value, int > = 0>
constexpr iteratoroperator+= (difference_type n)
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, random_access_range< Rngs >... >::value, int > = 0>
constexpr iteratoroperator-= (difference_type n)
 
 concat_with_view ()=default
 
 concat_with_view (Rngs... rngs)
 
constexpr auto begin ()
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, range< const Rngs >... >::value, int > = 0>
constexpr iterator< true > begin () const
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, common_range< Rngs >... >::value, int > = 0>
constexpr auto end ()
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, range< const Rngs >... >::value, int > = 0>
constexpr auto end () const
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, sized_range< Rngs >... >::value, int > = 0>
constexpr auto size ()
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, sized_range< const Rngs >... >::value, int > = 0>
constexpr auto size () const
 
template<typename R >
constexpr drop_view< views::all_t< R > > make_drop_view (R &&r, range_difference_t< R > count)
 
template<typename R , typename Pred , std::enable_if_t< conjunction< has_typename_type< views::detail::all_t_impl< R >>, std::is_object< Pred >>::value, int > = 0>
constexpr auto make_drop_while_view (R &&r, Pred &&pred)
 
template<typename R >
constexpr reverse_view< views::all_t< R > > make_reverse_view (R &&r)
 
template<typename R , typename P >
constexpr auto make_split_view (R &&r, P &&pattern)
 
template<typename R >
constexpr take_view< views::all_t< R > > make_take_view (R &&r, range_difference_t< R > count)
 
template<typename R , typename F , std::enable_if_t< conjunction< input_range< views::all_t< R >>, copy_constructible< F >, std::is_object< F >, regular_invocable< F &, range_reference_t< views::all_t< R >>>>::value, int > = 0>
constexpr transform_view< views::all_t< R >, F > make_transform_view (R &&r, F f)
 

Variables

constexpr VCCC_INLINE_OR_STATIC detail::set_intersection_niebloid set_intersection {}
 
constexpr VCCC_INLINE_OR_STATIC detail::begin_niebloid begin {}
 returns an iterator to the beginning of a range More...
 
constexpr VCCC_INLINE_OR_STATIC detail::cbegin_niebloid cbegin {}
 returns an iterator to the beginning of a read-only range More...
 
constexpr VCCC_INLINE_OR_STATIC detail::cdata_niebloid cdata {}
 
constexpr VCCC_INLINE_OR_STATIC detail::cend_niebloid cend {}
 returns a sentinel indicating the end of a read-only range More...
 
constexpr VCCC_INLINE_OR_STATIC detail::crbegin_niebloid crbegin {}
 
constexpr VCCC_INLINE_OR_STATIC detail::crend_niebloid crend {}
 
constexpr VCCC_INLINE_OR_STATIC detail::data_niebloid data {}
 obtains a pointer to the beginning of a contiguous range More...
 
constexpr VCCC_INLINE_OR_STATIC detail::distance_niebloid distance {}
 
constexpr VCCC_INLINE_OR_STATIC detail::empty_niebloid empty {}
 checks whether a range is empty More...
 
constexpr VCCC_INLINE_OR_STATIC detail::end_niebloid end {}
 returns a sentinel indicating the end of a range More...
 
constexpr VCCC_INLINE_OR_STATIC from_range_t from_range {}
 
constexpr VCCC_INLINE_OR_STATIC detail::rbegin_niebloid rbegin {}
 
constexpr VCCC_INLINE_OR_STATIC detail::rend_niebloid rend {}
 
constexpr VCCC_INLINE_OR_STATIC detail::size_niebloid size {}
 returns the size of a container or array More...
 
constexpr VCCC_INLINE_OR_STATIC detail::ssize_niebloid ssize {}
 returns a signed integer equal to the size of a range More...
 
constexpr VCCC_INLINE_OR_STATIC detail::all_adaptor_closure all {}
 a view that includes all elements of a range More...
 
constexpr VCCC_INLINE_OR_STATIC detail::as_const_adaptor_closure as_const {}
 
template<typename T >
constexpr VCCC_INLINE_OR_STATIC detail::basic_istream_niebloid< T > istream {}
 
constexpr VCCC_INLINE_OR_STATIC detail::common_adaptor_object common {}
 RangeAdaptorObject. More...
 
iteratorpos
 
iteratorpos
 
iteratorpos
 
difference_type n
 
iteratorpos
 
difference_type n
 
constexpr VCCC_INLINE_OR_STATIC detail::concat_niebloid concat {}
 concatenate ranges More...
 
iteratorpos
 
iteratorpos
 
iteratorpos
 
difference_type n
 
iteratorpos
 
difference_type n
 
constexpr VCCC_INLINE_OR_STATIC detail::concat_with_niebloid concat_with {}
 concatenate ranges More...
 
constexpr VCCC_INLINE_OR_STATIC detail::counted_niebloid counted {}
 creates a subrange from an iterator and a count More...
 
constexpr VCCC_INLINE_OR_STATIC detail::drop_niebloid drop {}
 
constexpr VCCC_INLINE_OR_STATIC detail::drop_while_niebloid drop_while {}
 
constexpr VCCC_INLINE_OR_STATIC detail::enumerate_adaptor_closure< std::tuple > enumerate {}
 
constexpr VCCC_INLINE_OR_STATIC detail::enumerate_adaptor_closure< std::pair > enumerate_pair {}
 return std::pair instead of std::tuple More...
 
constexpr VCCC_INLINE_OR_STATIC detail::filter_niebloid filter {}
 
constexpr VCCC_INLINE_OR_STATIC detail::join_adaptor_object join {}
 
constexpr VCCC_INLINE_OR_STATIC detail::join_with_niebloid join_with {}
 
constexpr VCCC_INLINE_OR_STATIC detail::repeat_niebloid repeat {}
 
constexpr VCCC_INLINE_OR_STATIC detail::reverse_adaptor_object reverse {}
 
constexpr VCCC_INLINE_OR_STATIC detail::split_niebloid split {}
 RangeAdaptorObject. The expression views::split(e, p) is expression-equivalent to split_view(e, p) for any suitable subexpressions e and p More...
 
constexpr VCCC_INLINE_OR_STATIC detail::take_niebloid take {}
 
constexpr VCCC_INLINE_OR_STATIC detail::take_while_niebloid take_while {}
 
constexpr VCCC_INLINE_OR_STATIC detail::transform_niebloid transform {}
 
constexpr VCCC_INLINE_OR_STATIC detail::zip_niebloid zip {}
 
constexpr VCCC_INLINE_OR_STATIC detail::zip_transform_niebloid zip_transform {}
 

Friends

struct sentinel<!Const >
 
struct iterator< Const >
 
struct concat_view
 
struct iterator<!IsConst >
 
struct sentinel<!Const >
 
struct iterator< Const >
 
class concat_with_view
 
struct iterator<!IsConst >
 
template<typename V = variant<iterator_t<maybe_const<IsConst, Rngs>>...>, std::enable_if_t< equality_comparable< V > ::value, int > = 0>
constexpr friend bool operator== (const iterator &x, const iterator &y)
 
template<typename V = variant<iterator_t<maybe_const<IsConst, Rngs>>...>, std::enable_if_t< equality_comparable< V > ::value, int > = 0>
constexpr friend bool operator!= (const iterator &x, const iterator &y)
 
constexpr friend bool operator== (const iterator &x, const sentinel< IsConst > &y)
 
constexpr friend bool operator!= (const iterator &x, const sentinel< IsConst > &y)
 
constexpr friend bool operator== (const sentinel< IsConst > &y, const iterator &x)
 
constexpr friend bool operator!= (const sentinel< IsConst > &y, const iterator &x)
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, sized_sentinel_for< iterator_t< Rngs >, iterator_t< Rngs >>... >::value, int > = 0>
constexpr friend difference_type operator- (const iterator &x, const iterator &y)
 
template<typename V = variant<iterator_t<maybe_const<IsConst, Rngs>>...>, std::enable_if_t< equality_comparable< V > ::value, int > = 0>
constexpr friend bool operator== (const iterator &x, const iterator &y)
 
template<typename V = variant<iterator_t<maybe_const<IsConst, Rngs>>...>, std::enable_if_t< equality_comparable< V > ::value, int > = 0>
constexpr friend bool operator!= (const iterator &x, const iterator &y)
 
constexpr friend bool operator== (const iterator &x, const sentinel< IsConst > &y)
 
constexpr friend bool operator!= (const iterator &x, const sentinel< IsConst > &y)
 
constexpr friend bool operator== (const sentinel< IsConst > &y, const iterator &x)
 
constexpr friend bool operator!= (const sentinel< IsConst > &y, const iterator &x)
 
template<typename Dummy = void, std::enable_if_t< conjunction< std::is_void< Dummy >, sized_sentinel_for< iterator_t< Rngs >, iterator_t< Rngs >>... >::value, int > = 0>
constexpr friend difference_type operator- (const iterator &x, const iterator &y)
 

Typedef Documentation

◆ all_t

using all_t = typename detail::all_t_impl<R>::type

◆ borrowed_iterator_t

using borrowed_iterator_t = typename borrowed_iterator<R>::type

◆ borrowed_subrange_t

using borrowed_subrange_t = typename borrowed_subrange<R>::type

◆ const_iterator_t

using const_iterator_t = typename const_iterator<T>::type

◆ const_sentinel_t

using const_sentinel_t = typename const_sentinel<R>::type

◆ difference_type [1/2]

◆ difference_type [2/2]

◆ istream_view

using istream_view = basic_istream_view<Val, char>

◆ iterator_category [1/2]

◆ iterator_category [2/2]

◆ iterator_concept [1/2]

◆ iterator_concept [2/2]

◆ iterator_t

using iterator_t = typename ranges::iterator<T>::type

◆ pointer [1/2]

using pointer = void

◆ pointer [2/2]

using pointer = void

◆ range_const_reference_t

◆ range_difference_t

using range_difference_t = typename range_difference<R>::type

◆ range_key_t

using range_key_t = typename range_key<R>::type

◆ range_mapped_t

using range_mapped_t = typename range_mapped<R>::type

◆ range_reference_t

◆ range_rvalue_reference_t

◆ range_size_t

using range_size_t = typename range_size<R>::type

◆ range_value_t

using range_value_t = typename range_value<R>::type

◆ reference [1/2]

◆ reference [2/2]

◆ sentinel_t

using sentinel_t = typename sentinel<R>::type

◆ set_intersection_result

◆ value_type [1/2]

using value_type = common_type_t<range_value_t<maybe_const<IsConst, Rngs> >...>

◆ value_type [2/2]

using value_type = common_type_t<range_value_t<maybe_const<IsConst, Rngs> >...>

◆ wistream_view

using wistream_view = basic_istream_view<Val, wchar_t>

Enumeration Type Documentation

◆ subrange_kind

enum subrange_kind : bool
strong
Enumerator
unsized 
sized 

Function Documentation

◆ concat_view() [1/2]

concat_view ( )
default

◆ concat_view() [2/2]

concat_view ( Rngs...  rngs)
inlineexplicit

◆ concat_with_view() [1/2]

concat_with_view ( )
default

◆ concat_with_view() [2/2]

concat_with_view ( Rngs...  rngs)
inlineexplicit

◆ iterator() [1/6]

iterator ( )
default

◆ iterator() [2/6]

iterator ( )
default

◆ iterator() [3/6]

constexpr iterator ( iterator< Other >  that)
inlineconstexpr

◆ iterator() [4/6]

constexpr iterator ( iterator< Other >  that)
inlineconstexpr

◆ iterator() [5/6]

constexpr iterator ( Parent *  parent,
in_place_index_t< I >  ,
It &&  it 
)
inlineconstexpr

◆ iterator() [6/6]

constexpr iterator ( Parent *  parent,
in_place_index_t< I >  ,
It &&  it 
)
inlineconstexpr

◆ sentinel() [1/4]

sentinel ( )
default

◆ sentinel() [2/4]

sentinel ( )
default

◆ sentinel() [3/4]

constexpr sentinel ( sentinel< AntiConst >  that)
inlineconstexpr

◆ sentinel() [4/4]

constexpr sentinel ( sentinel< AntiConst >  that)
inlineconstexpr

◆ as_const_pointer()

constexpr auto vccc::ranges::as_const_pointer ( const T *  p)
constexprnoexcept

◆ begin() [1/4]

constexpr auto begin ( )
inlineconstexpr

◆ begin() [2/4]

constexpr auto begin ( )
inlineconstexpr

◆ begin() [3/4]

constexpr iterator<true> begin ( ) const
inlineconstexpr

◆ begin() [4/4]

constexpr iterator<true> begin ( ) const
inlineconstexpr

◆ end() [1/4]

constexpr auto end ( )
inlineconstexpr

◆ end() [2/4]

constexpr auto end ( )
inlineconstexpr

◆ end() [3/4]

constexpr auto end ( ) const
inlineconstexpr

◆ end() [4/4]

constexpr auto end ( ) const
inlineconstexpr

◆ equal() [1/2]

constexpr bool equal ( const sentinel< IsConst > &  pos) const
inlineconstexpr

◆ equal() [2/2]

constexpr bool equal ( const sentinel< IsConst > &  pos) const
inlineconstexpr

◆ get() [1/2]

constexpr auto vccc::ranges::get ( const subrange< I, S, K > &  r)
constexpr

◆ get() [2/2]

constexpr auto vccc::ranges::get ( subrange< I, S, K > &&  r)
constexpr

◆ make_common_view()

constexpr common_view<views::all_t<R> > vccc::ranges::make_common_view ( R &&  r)
constexpr

◆ make_drop_view()

constexpr drop_view<views::all_t<R> > vccc::ranges::make_drop_view ( R &&  r,
range_difference_t< R >  count 
)
constexpr

◆ make_drop_while_view()

constexpr auto vccc::ranges::make_drop_while_view ( R &&  r,
Pred &&  pred 
)
constexpr

◆ make_reverse_view()

constexpr reverse_view<views::all_t<R> > vccc::ranges::make_reverse_view ( R &&  r)
constexpr

◆ make_split_view()

constexpr auto vccc::ranges::make_split_view ( R &&  r,
P &&  pattern 
)
constexpr

◆ make_subrange() [1/4]

constexpr subrange<I, S> vccc::ranges::make_subrange ( i,
s 
)
constexpr

◆ make_subrange() [2/4]

constexpr subrange<I, S, subrange_kind::sized> vccc::ranges::make_subrange ( i,
s,
detail::make_unsigned_like_t< iter_difference_t< I >>  n 
)
constexpr

◆ make_subrange() [3/4]

constexpr subrange<iterator_t<R>, sentinel_t<R>, (sized_range<R>::value || sized_sentinel_for<sentinel_t<R>, iterator_t<R>>::value) ? subrange_kind::sized : subrange_kind::unsized> vccc::ranges::make_subrange ( R &&  r)
constexpr

◆ make_subrange() [4/4]

constexpr subrange<iterator_t<R>, sentinel_t<R>, subrange_kind::sized> vccc::ranges::make_subrange ( R &&  r,
detail::make_unsigned_like_t< range_difference_t< R >>  n 
)
constexpr

◆ make_take_view()

constexpr take_view<views::all_t<R> > vccc::ranges::make_take_view ( R &&  r,
range_difference_t< R >  count 
)
constexpr

◆ make_transform_view()

constexpr transform_view<views::all_t<R>, F> vccc::ranges::make_transform_view ( R &&  r,
f 
)
constexpr

◆ operator()() [1/22]

void operator() ( I &  it,
in_place_index_t< 0 >   
)
inline

◆ operator()() [2/22]

void operator() ( I &  it,
in_place_index_t< 0 >   
)
inline

◆ operator()() [3/22]

void operator() ( I &  it,
in_place_index_t< 0 >   
)
inline

◆ operator()() [4/22]

void operator() ( I &  it,
in_place_index_t< 0 >   
)
inline

◆ operator()() [5/22]

void operator() ( I &  it,
in_place_index_t< cranges - 1 >   
)
inline

◆ operator()() [6/22]

void operator() ( I &  it,
in_place_index_t< cranges - 1 >   
)
inline

◆ operator()() [7/22]

void operator() ( I &  it,
in_place_index_t< N >   
)
inline

◆ operator()() [8/22]

void operator() ( I &  it,
in_place_index_t< N >   
)
inline

◆ operator()() [9/22]

void operator() ( I &  it,
in_place_index_t< N >   
)
inline

◆ operator()() [10/22]

void operator() ( I &  it,
in_place_index_t< N >   
)
inline

◆ operator()() [11/22]

void operator() ( I &  it,
in_place_index_t< N >   
)
inline

◆ operator()() [12/22]

void operator() ( I &  it,
in_place_index_t< N >   
)
inline

◆ operator()() [13/22]

void operator() ( I &  it,
in_place_index_t< N >   
)
inline

◆ operator()() [14/22]

void operator() ( I &  it,
in_place_index_t< N >   
)
inline

◆ operator()() [15/22]

void operator() ( U &  ,
in_place_index_t< variant_npos  
)
inline

◆ operator()() [16/22]

void operator() ( U &  ,
in_place_index_t< variant_npos  
)
inline

◆ operator()() [17/22]

void operator() ( U &  ,
in_place_index_t< variant_npos  
)
inline

◆ operator()() [18/22]

void operator() ( U &  ,
in_place_index_t< variant_npos  
)
inline

◆ operator()() [19/22]

void operator() ( U &  ,
in_place_index_t< variant_npos  
)
inline

◆ operator()() [20/22]

void operator() ( U &  ,
in_place_index_t< variant_npos  
)
inline

◆ operator()() [21/22]

void operator() ( U &  ,
in_place_index_t< variant_npos  
)
inline

◆ operator()() [22/22]

void operator() ( U &  ,
in_place_index_t< variant_npos  
)
inline

◆ operator*() [1/2]

constexpr decltype(auto) operator* ( ) const
inlineconstexpr

◆ operator*() [2/2]

constexpr decltype(auto) operator* ( ) const
inlineconstexpr

◆ operator++() [1/4]

constexpr iterator& operator++ ( )
inlineconstexpr

◆ operator++() [2/4]

constexpr iterator& operator++ ( )
inlineconstexpr

◆ operator++() [3/4]

constexpr void operator++ ( int  )
inlineconstexpr

◆ operator++() [4/4]

constexpr void operator++ ( int  )
inlineconstexpr

◆ operator+=() [1/2]

constexpr iterator& operator+= ( difference_type  n)
inlineconstexpr

◆ operator+=() [2/2]

constexpr iterator& operator+= ( difference_type  n)
inlineconstexpr

◆ operator--() [1/4]

constexpr iterator& operator-- ( )
inlineconstexpr

◆ operator--() [2/4]

constexpr iterator& operator-- ( )
inlineconstexpr

◆ operator--() [3/4]

constexpr iterator& operator-- ( int  )
inlineconstexpr

◆ operator--() [4/4]

constexpr iterator& operator-- ( int  )
inlineconstexpr

◆ operator-=() [1/2]

constexpr iterator& operator-= ( difference_type  n)
inlineconstexpr

◆ operator-=() [2/2]

constexpr iterator& operator-= ( difference_type  n)
inlineconstexpr

◆ possibly_const_range()

constexpr auto& vccc::ranges::possibly_const_range ( R &  r)
constexprnoexcept

◆ size() [1/4]

constexpr auto size ( )
inlineconstexpr

◆ size() [2/4]

constexpr auto size ( )
inlineconstexpr

◆ size() [3/4]

constexpr auto size ( ) const
inlineconstexpr

◆ size() [4/4]

constexpr auto size ( ) const
inlineconstexpr

Variable Documentation

◆ all

A RangeAdaptorObject (also a RangeAdaptorClosureObject) that returns a view that includes all elements of its range argument.

◆ as_const

◆ begin

constexpr VCCC_INLINE_OR_STATIC detail::begin_niebloid begin {}
constexpr

Returns an iterator to the first element of the argument.

See also
std::ranges::begin

◆ cbegin

constexpr VCCC_INLINE_OR_STATIC detail::cbegin_niebloid cbegin {}
constexpr

Returns an iterator to the first element of the argument.

See also
std::ranges::cbegin

◆ cdata

constexpr VCCC_INLINE_OR_STATIC detail::cdata_niebloid cdata {}
constexpr

◆ cend

constexpr VCCC_INLINE_OR_STATIC detail::cend_niebloid cend {}
constexpr

Returns a sentinel for the constant iterator indicating the end of a range.

See also
std::ranges::cend

◆ common

◆ concat

constexpr VCCC_INLINE_OR_STATIC detail::concat_niebloid concat {}
constexpr

◆ concat_with

constexpr VCCC_INLINE_OR_STATIC detail::concat_with_niebloid concat_with {}
constexpr

◆ counted

constexpr VCCC_INLINE_OR_STATIC detail::counted_niebloid counted {}
constexpr

A counted view presents a view of the elements of the counted range [i, n) for some iterator i and non-negative integer n. A counted range [i, n) is the n elements starting with the element pointed to by i and up to but not including the element, if any, pointed to by the result of n applications of ++i. If n == 0, the counted range is valid and empty. Otherwise, the counted range is only valid if n is positive, i is dereferenceable, and [++i, --n) is a valid counted range.

See also
std::views::counted

◆ crbegin

constexpr VCCC_INLINE_OR_STATIC detail::crbegin_niebloid crbegin {}
constexpr

◆ crend

constexpr VCCC_INLINE_OR_STATIC detail::crend_niebloid crend {}
constexpr

◆ data

constexpr VCCC_INLINE_OR_STATIC detail::data_niebloid data {}
constexpr

Returns a pointer to the first element of a contiguous range.

See also
std::ranges::data
ranges::cdata
ranges::data
vccc::data

◆ distance

constexpr VCCC_INLINE_OR_STATIC detail::distance_niebloid distance {}
constexpr

◆ drop

constexpr VCCC_INLINE_OR_STATIC detail::drop_niebloid drop {}
constexpr

◆ drop_while

constexpr VCCC_INLINE_OR_STATIC detail::drop_while_niebloid drop_while {}
constexpr

◆ empty

constexpr VCCC_INLINE_OR_STATIC detail::empty_niebloid empty {}
constexpr

Determines whether or not t has any elements.

◆ end

constexpr VCCC_INLINE_OR_STATIC detail::end_niebloid end {}
constexpr

Returns a sentinel indicating the end of a range.

See also
std::ranges::end

◆ enumerate

constexpr VCCC_INLINE_OR_STATIC detail::enumerate_adaptor_closure<std::tuple> enumerate {}
constexpr

◆ enumerate_pair

constexpr VCCC_INLINE_OR_STATIC detail::enumerate_adaptor_closure<std::pair> enumerate_pair {}
constexpr

◆ filter

constexpr VCCC_INLINE_OR_STATIC detail::filter_niebloid filter {}
constexpr

◆ from_range

constexpr VCCC_INLINE_OR_STATIC from_range_t from_range {}
constexpr

◆ istream

constexpr VCCC_INLINE_OR_STATIC detail::basic_istream_niebloid<T> istream {}
constexpr

◆ join

◆ join_with

constexpr VCCC_INLINE_OR_STATIC detail::join_with_niebloid join_with {}
constexpr

◆ n [1/4]

◆ n [2/4]

◆ n [3/4]

◆ n [4/4]

◆ pos [1/8]

iterator* pos

◆ pos [2/8]

iterator* pos

◆ pos [3/8]

iterator* pos

◆ pos [4/8]

iterator* pos

◆ pos [5/8]

iterator* pos

◆ pos [6/8]

iterator* pos

◆ pos [7/8]

iterator* pos

◆ pos [8/8]

iterator* pos

◆ rbegin

constexpr VCCC_INLINE_OR_STATIC detail::rbegin_niebloid rbegin {}
constexpr

◆ rend

constexpr VCCC_INLINE_OR_STATIC detail::rend_niebloid rend {}
constexpr

◆ repeat

constexpr VCCC_INLINE_OR_STATIC detail::repeat_niebloid repeat {}
constexpr

◆ reverse

constexpr VCCC_INLINE_OR_STATIC detail::reverse_adaptor_object reverse {}
constexpr

◆ set_intersection

constexpr VCCC_INLINE_OR_STATIC detail::set_intersection_niebloid set_intersection {}
constexpr

◆ size

constexpr VCCC_INLINE_OR_STATIC detail::size_niebloid size {}
constexpr

Calculates the number of elements in t in constant time.

◆ split

constexpr VCCC_INLINE_OR_STATIC detail::split_niebloid split {}
constexpr

◆ ssize

constexpr VCCC_INLINE_OR_STATIC detail::ssize_niebloid ssize {}
constexpr

Returns the size of a range converted to a signed type.

◆ take

constexpr VCCC_INLINE_OR_STATIC detail::take_niebloid take {}
constexpr

◆ take_while

constexpr VCCC_INLINE_OR_STATIC detail::take_while_niebloid take_while {}
constexpr

◆ transform

constexpr VCCC_INLINE_OR_STATIC detail::transform_niebloid transform {}
constexpr

◆ zip

constexpr VCCC_INLINE_OR_STATIC detail::zip_niebloid zip {}
constexpr

◆ zip_transform

constexpr VCCC_INLINE_OR_STATIC detail::zip_transform_niebloid zip_transform {}
constexpr

Friends

◆ iterator<!IsConst > [1/2]

friend struct iterator<!IsConst >
friend

◆ iterator<!IsConst > [2/2]

friend struct iterator<!IsConst >
friend

◆ sentinel<!Const > [1/2]

friend struct sentinel<!Const >
friend

◆ sentinel<!Const > [2/2]

friend struct sentinel<!Const >
friend

◆ concat_view

friend struct concat_view
friend

◆ concat_with_view

friend class concat_with_view
friend

◆ iterator< Const > [1/2]

friend struct iterator< Const >
friend

◆ iterator< Const > [2/2]

friend struct iterator< Const >
friend

◆ operator!= [1/6]

constexpr friend bool operator!= ( const iterator< IsConst > &  x,
const iterator< IsConst > &  y 
)
friend

◆ operator!= [2/6]

constexpr friend bool operator!= ( const iterator< IsConst > &  x,
const iterator< IsConst > &  y 
)
friend

◆ operator!= [3/6]

constexpr friend bool operator!= ( const iterator< IsConst > &  x,
const sentinel< IsConst > &  y 
)
friend

◆ operator!= [4/6]

constexpr friend bool operator!= ( const iterator< IsConst > &  x,
const sentinel< IsConst > &  y 
)
friend

◆ operator!= [5/6]

constexpr friend bool operator!= ( const sentinel< IsConst > &  y,
const iterator< IsConst > &  x 
)
friend

◆ operator!= [6/6]

constexpr friend bool operator!= ( const sentinel< IsConst > &  y,
const iterator< IsConst > &  x 
)
friend

◆ operator- [1/2]

constexpr friend difference_type operator- ( const iterator< IsConst > &  x,
const iterator< IsConst > &  y 
)
friend

◆ operator- [2/2]

constexpr friend difference_type operator- ( const iterator< IsConst > &  x,
const iterator< IsConst > &  y 
)
friend

◆ operator== [1/6]

constexpr friend bool operator== ( const iterator< IsConst > &  x,
const iterator< IsConst > &  y 
)
friend

◆ operator== [2/6]

constexpr friend bool operator== ( const iterator< IsConst > &  x,
const iterator< IsConst > &  y 
)
friend

◆ operator== [3/6]

constexpr friend bool operator== ( const iterator< IsConst > &  x,
const sentinel< IsConst > &  y 
)
friend

◆ operator== [4/6]

constexpr friend bool operator== ( const iterator< IsConst > &  x,
const sentinel< IsConst > &  y 
)
friend

◆ operator== [5/6]

constexpr friend bool operator== ( const sentinel< IsConst > &  y,
const iterator< IsConst > &  x 
)
friend

◆ operator== [6/6]

constexpr friend bool operator== ( const sentinel< IsConst > &  y,
const iterator< IsConst > &  x 
)
friend