Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
libcxx/include/__ranges/reverse_view.h
Show First 20 Lines • Show All 58 Lines • ▼ Show 20 Lines | public: | ||||
_LIBCPP_HIDE_FROM_ABI | _LIBCPP_HIDE_FROM_ABI | ||||
constexpr reverse_iterator<iterator_t<_View>> begin() { | constexpr reverse_iterator<iterator_t<_View>> begin() { | ||||
if constexpr (_UseCache) | if constexpr (_UseCache) | ||||
if (__cached_begin_.__has_value()) | if (__cached_begin_.__has_value()) | ||||
return *__cached_begin_; | return *__cached_begin_; | ||||
auto __tmp = _VSTD::make_reverse_iterator(ranges::next(ranges::begin(__base_), ranges::end(__base_))); | auto __tmp = _VSTD::make_reverse_iterator(ranges::next(ranges::begin(__base_), ranges::end(__base_))); | ||||
if constexpr (_UseCache) | if constexpr (_UseCache) | ||||
__cached_begin_.__set(__tmp); | __cached_begin_.__emplace(__tmp); | ||||
return __tmp; | return __tmp; | ||||
} | } | ||||
_LIBCPP_HIDE_FROM_ABI | _LIBCPP_HIDE_FROM_ABI | ||||
constexpr reverse_iterator<iterator_t<_View>> begin() requires common_range<_View> { | constexpr reverse_iterator<iterator_t<_View>> begin() requires common_range<_View> { | ||||
return _VSTD::make_reverse_iterator(ranges::end(__base_)); | return _VSTD::make_reverse_iterator(ranges::end(__base_)); | ||||
} | } | ||||
Show All 38 Lines |