Changeset View
Changeset View
Standalone View
Standalone View
libcxx/include/__iterator/concepts.h
Show First 20 Lines • Show All 158 Lines • ▼ Show 20 Lines | concept contiguous_iterator = | ||||
derived_from<_ITER_CONCEPT<_Ip>, contiguous_iterator_tag> && | derived_from<_ITER_CONCEPT<_Ip>, contiguous_iterator_tag> && | ||||
is_lvalue_reference_v<iter_reference_t<_Ip>> && | is_lvalue_reference_v<iter_reference_t<_Ip>> && | ||||
same_as<iter_value_t<_Ip>, remove_cvref_t<iter_reference_t<_Ip>>> && | same_as<iter_value_t<_Ip>, remove_cvref_t<iter_reference_t<_Ip>>> && | ||||
(is_pointer_v<_Ip> || requires { sizeof(__pointer_traits_element_type<_Ip>); }) && | (is_pointer_v<_Ip> || requires { sizeof(__pointer_traits_element_type<_Ip>); }) && | ||||
requires(const _Ip& __i) { | requires(const _Ip& __i) { | ||||
{ _VSTD::to_address(__i) } -> same_as<add_pointer_t<iter_reference_t<_Ip>>>; | { _VSTD::to_address(__i) } -> same_as<add_pointer_t<iter_reference_t<_Ip>>>; | ||||
}; | }; | ||||
template<class _In, class _Out> | |||||
concept indirectly_movable = | |||||
ldionne: Do we want to move this to `indirect_concepts.h`? Or should we instead get rid of… | |||||
The latter option was selected. Thanks for doing this. zoecarver: The latter option was selected. Thanks for doing this. | |||||
indirectly_readable<_In> && | |||||
indirectly_writable<_Out, iter_rvalue_reference_t<_In>>; | |||||
template<class _In, class _Out> | |||||
concept indirectly_movable_storable = | |||||
indirectly_movable<_In, _Out> && | |||||
indirectly_writable<_Out, iter_value_t<_In>> && | |||||
movable<iter_value_t<_In>> && | |||||
constructible_from<iter_value_t<_In>, iter_rvalue_reference_t<_In>> && | |||||
assignable_from<iter_value_t<_In>&, iter_rvalue_reference_t<_In>>; | |||||
// clang-format on | // clang-format on | ||||
#endif // !defined(_LIBCPP_HAS_NO_RANGES) | #endif // !defined(_LIBCPP_HAS_NO_RANGES) | ||||
_LIBCPP_END_NAMESPACE_STD | _LIBCPP_END_NAMESPACE_STD | ||||
_LIBCPP_POP_MACROS | _LIBCPP_POP_MACROS | ||||
#endif // _LIBCPP___ITERATOR_CONCEPTS_H | #endif // _LIBCPP___ITERATOR_CONCEPTS_H |
Do we want to move this to indirect_concepts.h? Or should we instead get rid of indirect_concepts.h and move those here instead (as a separate NFC patch)?
No strong preference.