Changeset View
Changeset View
Standalone View
Standalone View
libcxx/include/__ranges/concepts.h
Show First 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | namespace ranges { | ||||
// [range.refinements], other range refinements | // [range.refinements], other range refinements | ||||
template <class _Tp> | template <class _Tp> | ||||
concept input_range = range<_Tp> && input_iterator<iterator_t<_Tp> >; | concept input_range = range<_Tp> && input_iterator<iterator_t<_Tp> >; | ||||
template <class _Tp> | template <class _Tp> | ||||
concept forward_range = input_range<_Tp> && forward_iterator<iterator_t<_Tp> >; | concept forward_range = input_range<_Tp> && forward_iterator<iterator_t<_Tp> >; | ||||
template <class _Tp> | template <class _Tp> | ||||
concept common_range = range<_Tp> && same_as<iterator_t<_Tp>, sentinel_t<_Tp> >; | concept bidirectional_range = forward_range<_Tp> && bidirectional_iterator<iterator_t<_Tp> >; | ||||
template <class _Tp> | |||||
concept common_range = range<_Tp> && same_as<iterator_t<_Tp>, sentinel_t<_Tp> >; | |||||
} // namespace ranges | } // namespace ranges | ||||
#endif // !defined(_LIBCPP_HAS_NO_RANGES) | #endif // !defined(_LIBCPP_HAS_NO_RANGES) | ||||
// clang-format on | // clang-format on | ||||
_LIBCPP_END_NAMESPACE_STD | _LIBCPP_END_NAMESPACE_STD | ||||
_LIBCPP_POP_MACROS | _LIBCPP_POP_MACROS | ||||
#endif // _LIBCPP_RANGES_CONCEPTS_H | #endif // _LIBCPP_RANGES_CONCEPTS_H |