Files
2025-10-25 03:02:53 +03:00

4.4 KiB
Raw Permalink Blame History

[range.enumerate.view]

25 Ranges library [ranges]

25.7 Range adaptors [range.adaptors]

25.7.24 Enumerate view [range.enumerate]

25.7.24.2 Class template enumerate_view [range.enumerate.view]

🔗

namespace std::ranges {template<view V>requires range-with-movable-referencesclass enumerate_view : public view_interface<enumerate_view> { V base_ = V(); // exposition only// [range.enumerate.iterator], class template enumerate_view::iteratortemplateclass iterator; // exposition only// [range.enumerate.sentinel], class template enumerate_view::sentineltemplateclass sentinel; // exposition onlypublic:constexpr enumerate_view() requires default_initializable = default; constexpr explicit enumerate_view(V base); constexpr auto begin() requires (simple-view){ return iterator(ranges::begin(base_), 0); }constexpr auto begin() const requires range-with-movable-references{ return iterator(ranges::begin(base_), 0); }constexpr auto end() requires (simple-view) {if constexpr (forward_range && common_range && sized_range)return iterator(ranges::end(base_), ranges::distance(base_)); elsereturn sentinel(ranges::end(base_)); }constexpr auto end() const requires range-with-movable-references {if constexpr (forward_range && common_range && sized_range)return iterator(ranges::end(base_), ranges::distance(base_)); elsereturn sentinel(ranges::end(base_)); }constexpr auto size() requires sized_range{ return ranges::size(base_); }constexpr auto size() const requires sized_range{ return ranges::size(base_); }constexpr auto reserve_hint() requires approximately_sized_range{ return ranges::reserve_hint(base_); }constexpr auto reserve_hint() const requires approximately_sized_range{ return ranges::reserve_hint(base_); }constexpr V base() const & requires copy_constructible { return base_; }constexpr V base() && { return std::move(base_); }}; template enumerate_view(R&&) -> enumerate_view<views::all_t>;}

🔗

constexpr explicit enumerate_view(V base);

1

#

Effects: Initializes base_ with std::move(base).