Range-v3
Range algorithms, views, and actions for the Standard Library
concepts.hpp File Reference

Classes

class  multiset< Key, Compare, Alloc >
 
class  set< Key, Compare, Alloc >
 
class  unordered_multiset< Key, Hash, Pred, Alloc >
 
class  unordered_set< Key, Hash, Pred, Alloc >
 

Typedefs

using ranges::bidirectional_range_tag = ::concepts::tag< bidirectional_range_concept, forward_range_tag >
 
using ranges::common_range_tag = ::concepts::tag< common_range_concept, range_tag >
 
template<typename T >
using ranges::common_range_tag_of = ::concepts::tag_of< meta::list< common_range_concept, range_concept >, T >
 
using ranges::contiguous_range_tag = ::concepts::tag< contiguous_range_concept, random_access_range_tag >
 
using ranges::forward_range_tag = ::concepts::tag< forward_range_concept, input_range_tag >
 
using ranges::input_range_tag = ::concepts::tag< input_range_concept, range_tag >
 
using ranges::random_access_range_tag = ::concepts::tag< random_access_range_concept, bidirectional_range_tag >
 
using ranges::range_tag = ::concepts::tag< range_concept >
 
template<typename T >
using ranges::range_tag_of = ::concepts::tag_of< meta::list< contiguous_range_concept, random_access_range_concept, bidirectional_range_concept, forward_range_concept, input_range_concept, range_concept >, T >
 
using ranges::sized_range_tag = ::concepts::tag< sized_range_concept, range_tag >
 
template<typename T >
using ranges::sized_range_tag_of = ::concepts::tag_of< meta::list< sized_range_concept, range_concept >, T >
 

Functions

 ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename T)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_
 Range concepts below. More...
 
 ranges::CPP_PP_CAT (CPP_PP_DEF_, template(typename T, typename V)) META_CONCEPT CPP_PP_CAT(CPP_PP_DEF_
 

Variables

concept ranges::bidirectional_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( forward_range<T> && bidirectional_range_<T> )( forward_range<T> && bidirectional_range_<T> )
 
concept ranges::common_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( range<T> && common_range_<T> )( range<T> && common_range_<T> )
 
concept ranges::contiguous_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( random_access_range<T> && contiguous_range_<T> )( random_access_range<T> && contiguous_range_<T> )
 
template<typename T >
constexpr bool ranges::enable_view
 
concept ranges::forward_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( input_range<T> && forward_range_<T> )( input_range<T> && forward_range_<T> )
 
concept ranges::input_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( range<T> && input_range_<T> )( range<T> && input_range_<T> )
 
concept ranges::output_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( range<T> && output_iterator<iterator_t<T> )( range<T> && output_iterator<iterator_t<T>, V> )
 
concept ranges::random_access_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( bidirectional_range<T> && random_access_range_<T> )( bidirectional_range<T> && random_access_range_<T> )
 
concept ranges::range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( range_impl_<T &> )( range_impl_<T &> )
 
concept ranges::sized_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( requires (T &t) ( ranges::size(t) ) && range<T> && detail::integer_like_<range_size_t<T>> && !disable_sized_range<uncvref_t<T>> )( requires (T &t) ( ranges::size(t) ) && range<T> && detail::integer_like_<range_size_t<T>> && !disable_sized_range<uncvref_t<T>> )
 
concept ranges::view_ = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( range<T> && semiregular<T> && enable_view<T> )( range<T> && semiregular<T> && enable_view<T> )
 
concept ranges::viewable_range = CPP_PP_CAT( CPP_PP_DEF_IMPL_IS_PAREN_, 0 )( range<T> && (forwarding_range_<T> || view_<detail::decay_t<T>>) )( range<T> && (forwarding_range_<T> || view_<detail::decay_t<T>>) )