concepts.hpp File Reference

## Classes

class | multiset< Key, Compare, Alloc >
struct | ranges::bidirectional_range_tag
struct | ranges::common_range_tag
struct | ranges::contiguous_range_tag
struct | ranges::forward_range_tag
struct | ranges::input_range_tag
struct | ranges::random_access_range_tag
struct | ranges::range_tag
struct | ranges::sized_range_tag
class | set< Key, Compare, Alloc >
class | unordered_multiset< Key, Hash, Pred, Alloc >
class | unordered_set< Key, Hash, Pred, Alloc >

## Typedefs

template<typename Rng >
using | ranges::common_range_tag_of = std::enable_if_t< range< Rng >, detail::if_then_t< common_range< Rng >, common_range_tag, range_tag > >
template<typename Rng >

using

ranges::range_tag_of = std::enable_if_t< range< Rng >, detail::if_then_t< contiguous_range< Rng >, contiguous_range_tag, detail::if_then_t< random_access_range< Rng >, random_access_range_tag, detail::if_then_t< bidirectional_range< Rng >, bidirectional_range_tag, detail::if_then_t< forward_range< Rng >, forward_range_tag, detail::if_then_t< input_range< Rng >, input_range_tag, range_tag > >> >> >

template<typename Rng >
using | ranges::sized_range_tag_of = std::enable_if_t< range< Rng >, detail::if_then_t< sized_range< Rng >, sized_range_tag, range_tag > >

## Variables

template<typename T >
concept | ranges::bidirectional_range
template<typename T >
concept | ranges::defer::bidirectional_range = ranges::bidirectional_range < T >
template<typename T >
concept | ranges::bidirectional_range_ = bidirectional_iterator<iterator_t<T>>
template<typename T >
concept | ranges::common_range
template<typename T >
concept | ranges::defer::common_range = ranges::common_range < T >
template<typename T >
concept | ranges::common_range_ = same_as<iterator_t<T>, sentinel_t<T>>
template<typename T >
concept | ranges::contiguous_range
template<typename T >
concept | ranges::defer::contiguous_range = ranges::contiguous_range < T >
template<typename T >
concept | ranges::contiguous_range_ = contiguous_iterator<iterator_t<T>> && same_as<detail::data_t<T>, std::add_pointer_t<iter_reference_t<iterator_t<T>>>>
template<typename T >
constexpr bool | ranges::enable_view
template<typename T >
concept | ranges::forward_range
template<typename T >
concept | ranges::defer::forward_range = ranges::forward_range < T >
template<typename T >
concept | ranges::forward_range_ = forward_iterator<iterator_t<T>>
template<typename T >
concept | ranges::forwarding_range_
template<typename T >
concept | ranges::defer::forwarding_range_ = ranges::forwarding_range_ < T >
template<typename T >
concept | ranges::input_range
template<typename T >
concept | ranges::defer::input_range = ranges::input_range < T >
template<typename T >
concept | ranges::input_range_ = input_iterator<iterator_t<T>>
template<typename T , typename V >
concept | ranges::output_range
template<typename T , typename V >
concept | ranges::defer::output_range = ranges::output_range < T, V >
template<typename T , typename V >
concept | ranges::output_range_ = output_iterator<iterator_t<T>, V>
template<typename T >
concept | ranges::random_access_range
template<typename T >
concept | ranges::defer::random_access_range = ranges::random_access_range < T >
template<typename T >
concept | ranges::random_access_range_ = random_access_iterator<iterator_t<T>>
template<typename T >
concept | ranges::range
template<typename T >
concept | ranges::defer::range = ranges::range < T >
template<typename T >
concept | ranges::range_impl_
| Range concepts below. More...
template<typename T >
concept | ranges::sized_range
template<typename T >
concept | ranges::defer::sized_range = ranges::sized_range < T >
template<typename T >
concept | ranges::sized_range_ = detail::integer_like_<range_size_t<T>>
template<typename T >
concept | ranges::view_
| View concepts below. More...
template<typename T >
concept | ranges::defer::view_ = ranges::view_ < T >
template<typename T >
concept | ranges::viewable_range
template<typename T >
concept | ranges::defer::viewable_range = ranges::viewable_range < T >