Changeset View
Changeset View
Standalone View
Standalone View
libcxx/include/__iterator/concepts.h
Show First 20 Lines • Show All 118 Lines • ▼ Show 20 Lines | |||||
// [iterator.concept.input] | // [iterator.concept.input] | ||||
template<class _Ip> | template<class _Ip> | ||||
concept input_iterator = | concept input_iterator = | ||||
input_or_output_iterator<_Ip> && | input_or_output_iterator<_Ip> && | ||||
indirectly_readable<_Ip> && | indirectly_readable<_Ip> && | ||||
requires { typename _ITER_CONCEPT<_Ip>; } && | requires { typename _ITER_CONCEPT<_Ip>; } && | ||||
derived_from<_ITER_CONCEPT<_Ip>, input_iterator_tag>; | derived_from<_ITER_CONCEPT<_Ip>, input_iterator_tag>; | ||||
// [iterator.concept.output] | |||||
template<class _Ip, class _Tp> | |||||
concept output_iterator = | |||||
input_or_output_iterator<_Ip> && | |||||
indirectly_writable<_Ip, _Tp> && | |||||
requires (_Ip __it, _Tp&& __t) { | |||||
*__it++ = _VSTD::forward<_Tp>(__t); // not required to be equality-preserving | |||||
Quuxplusone: As usual, I think it would be nice to use `static_cast<_Tp&&>(__t)` here, but I don't object if… | |||||
ldionneAuthorUnsubmitted We're not. If we do that, we can do it across the library and document it somewhere. I don't want to start doing it as one-offs, since that's just creating inconsistency. ldionne: We're not. If we do that, we can do it across the library and document it somewhere. I don't… | |||||
}; | |||||
// [iterator.concept.forward] | // [iterator.concept.forward] | ||||
template<class _Ip> | template<class _Ip> | ||||
concept forward_iterator = | concept forward_iterator = | ||||
input_iterator<_Ip> && | input_iterator<_Ip> && | ||||
derived_from<_ITER_CONCEPT<_Ip>, forward_iterator_tag> && | derived_from<_ITER_CONCEPT<_Ip>, forward_iterator_tag> && | ||||
incrementable<_Ip> && | incrementable<_Ip> && | ||||
sentinel_for<_Ip, _Ip>; | sentinel_for<_Ip, _Ip>; | ||||
▲ Show 20 Lines • Show All 129 Lines • Show Last 20 Lines |
As usual, I think it would be nice to use static_cast<_Tp&&>(__t) here, but I don't object if we're not doing that (yet).