2.9 KiB
[range.as.const.view]
25 Ranges library [ranges]
25.7 Range adaptors [range.adaptors]
25.7.22 As const view [range.as.const]
25.7.22.2 Class template as_const_view [range.as.const.view]
namespace std::ranges {template<view V>requires input_rangeclass as_const_view : public view_interface<as_const_view> { V base_ = V(); // exposition onlypublic: as_const_view() requires default_initializable = default; constexpr explicit as_const_view(V base); constexpr V base() const & requires copy_constructible { return base_; }constexpr V base() && { return std::move(base_); }constexpr auto begin() requires () { return ranges::cbegin(base_); }constexpr auto begin() const requires range { return ranges::cbegin(base_); }constexpr auto end() requires (
) { return ranges::cend(base_); }constexpr auto end() const requires range { return ranges::cend(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_); }}; template as_const_view(R&&) -> as_const_view<views::all_t>;}
constexpr explicit as_const_view(V base);
Effects: Initializes base_ with std::move(base).