14#ifndef RANGES_V3_RANGE_CONCEPTS_HPP
15#define RANGES_V3_RANGE_CONCEPTS_HPP
17#include <range/v3/detail/config.hpp>
19#include <initializer_list>
24#if __has_include(<span>) && !defined(RANGES_WORKAROUND_MSVC_UNUSABLE_SPAN)
27#if __has_include(<string_view>)
45#include <range/v3/detail/prologue.hpp>
76 range<T> && detail::_borrowed_range<T>;
79 RANGES_DEPRECATED(
"Please use ranges::borrowed_range instead.")
84 template(typename T, typename V)(
90 template<typename T, typename V>
108 template(typename T)(
120 template(typename T)(
132 template(typename T)(
147 template<
typename Rng>
148 using data_t =
decltype(ranges::data(std::declval<Rng &>()));
150 template<
typename Rng>
158 template(
typename T)(
161 same_as<detail::data_t<T>, std::add_pointer_t<iter_reference_t<iterator_t<T>>>>
172 template(
typename T)(
187 CPP_concept bounded_range =
201 template(
typename T)(
203 detail::integer_like_<range_size_t<T>>);
210 !disable_sized_range<uncvref_t<T>> &&
220 : std::is_base_of<view_base, T>
227 RANGES_INLINE_VAR
constexpr bool enable_view =
228 ext::enable_view<T>::value;
230#if defined(__cpp_lib_string_view) && __cpp_lib_string_view >= 201603L
231 template<
typename Char,
typename Traits>
232 RANGES_INLINE_VAR
constexpr bool enable_view<std::basic_string_view<Char, Traits>> =
238#if defined(__cpp_lib_span) && __cpp_lib_span >= 202002L && \
239 (!defined(__GLIBCXX__) || defined(__cpp_lib_concepts))
240 template<
typename T, std::
size_t N>
241 RANGES_INLINE_VAR
constexpr bool enable_view<std::span<T, N>> = N + 1 < 2;
281 template<
typename Rng>
307 template<
typename Rng>
308 using common_range_tag_of =
318 template<
typename Rng>
319 using sized_range_tag_of =
325 namespace view_detail_
343 using ranges::enable_view;
351 using ranges::view_detail_::view;
357#include <range/v3/detail/epilogue.hpp>
The bidirectional_iterator concept.
The bidirectional_range_ concept.
The bidirectional_range concept.
The borrowed_range concept.
The common_range_ concept.
The common_range concept.
The contiguous_iterator concept.
The contiguous_range_ concept.
The contiguous_range concept.
The forward_iterator concept.
The forward_range_ concept.
The forward_range concept.
The output_iterator concept.
The output_range_ concept.
The output_range concept.
The random_access_iterator concept.
The random_access_range_ concept.
The random_access_range concept.
The sized_range_ concept.
The viewable_range concept.
decltype(begin(declval(Rng &))) iterator_t
Definition access.hpp:698
typename T::type _t
Type alias for T::type.
Definition meta.hpp:141
typename detail::_cond< If >::template invoke< Then, Else > conditional_t
Select one type or another depending on a compile-time Boolean.
Definition meta.hpp:1148
Definition concepts.hpp:275
Definition concepts.hpp:305
Definition concepts.hpp:279
Definition concepts.hpp:273
Definition concepts.hpp:277
Definition concepts.hpp:268
Definition concepts.hpp:316
Definition range_fwd.hpp:182