A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://en.cppreference.com/w/cpp/algorithm/ranges/../../ranges/as_const_view.html below:

std::ranges::views::as_const, std::ranges::as_const_view - cppreference.com

1)

A range adaptor that represents a view of underlying

view

that is also a

constant_range

. An

as_const_view

always has read-only elements (if not empty).

2) RangeAdaptorObject

. Let

e

be a subexpression, let

T

be

decltype((e))

, and let

U

be

std::remove_cvref_t<T>

. Then the expression

views::as_const(e)

is

expression-equivalent

to:

as_const_view always models constant_range, and it models the contiguous_range, random_access_range, bidirectional_range, forward_range, borrowed_range, common_range, and sized_range when the underlying view V models respective concepts.

[edit] Data members Member Description V base_ (private) the underlying view
(exposition-only member object*) [edit] Member functions constructs an as_const_view
(public member function) returns the underlying view V
(public member function) returns the beginning iterator of the as_const_view
(public member function) returns the end iterator of the as_const_view
(public member function) returns the size of the view if it is bounded
(public member function) returns the approximate size of the underlying approximately_sized_range
(public member function) Inherited from std::ranges::view_interface returns whether the derived view is empty, provided only if it satisfies sized_range or forward_range
(public member function of std::ranges::view_interface<D>) [edit] returns a constant iterator to the beginning of the range
(public member function of std::ranges::view_interface<D>) [edit] returns a sentinel for the constant iterator of the range
(public member function of std::ranges::view_interface<D>) [edit] returns whether the derived view is not empty, provided only if ranges::empty is applicable to it
(public member function of std::ranges::view_interface<D>) [edit] gets the address of derived view's data, provided only if its iterator type satisfies contiguous_iterator
(public member function of std::ranges::view_interface<D>) [edit] returns the first element in the derived view, provided if it satisfies forward_range
(public member function of std::ranges::view_interface<D>) [edit] returns the last element in the derived view, provided only if it satisfies bidirectional_range and common_range
(public member function of std::ranges::view_interface<D>) [edit] returns the nth element in the derived view, provided only if it satisfies random_access_range
(public member function of std::ranges::view_interface<D>) [edit] std::ranges::as_const_view::as_const_view (1) (since C++23)

constexpr explicit as_const_view( V base );

(2) (since C++23) 1)

Value-initializes

base_

  via its default member initializer (

= V()

).

2)

Initializes

base_

  with

std::move(base)

.

Parameters std::ranges::as_const_view::base (1) (since C++23)

constexpr V base() &&;

(2) (since C++23)

Returns the underlying view.

1)

Copy-constructs the result from the underlying view. Equivalent to

return base_ ;

.

2)

Move-constructs the result from the underlying view. Equivalent to

return std::move(base_ );

.

std::ranges::as_const_view::begin

constexpr auto begin() requires (!/*simple_view*/<V>);

(1) (since C++23) (2) (since C++23)

Returns the constant iterator of the view. Equivalent to return ranges::cbegin(base_ );.

std::ranges::as_const_view::end

constexpr auto end() requires (!/*simple_view*/<V>);

(1) (since C++23) (2) (since C++23)

Returns the constant sentinel of the view. Equivalent to return ranges::cend(base_ );.

std::ranges::as_const_view::size

Returns the size of the view if the view is bounded. Equivalent to return ranges::size(base_ );.

std::ranges::as_rvalue_view::reserve_hint

constexpr auto reserve_hint()
    requires ranges::approximately_sized_range<V>;

(1) (since C++26)

constexpr auto reserve_hint() const
    requires ranges::approximately_sized_range<const V>;

(2) (since C++26)

Returns ranges::reserve_hint(base_ ).

[edit] Deduction guides template< class R >
as_const_view( R&& ) -> as_const_view<views::all_t<R>>;
(since C++23) [edit] Helper templates

This specialization of ranges::enable_borrowed_range makes as_const_view satisfy borrowed_range when the underlying view satisfies it.

[edit] Notes [edit] Example
#include <cassert>
#include <ranges>
 
int main()
{
    int x[]{1, 2, 3, 4, 5};
 
    auto v1 = x | std::views::drop(2);
    assert(v1.back() == 5);
    v1[0]++; // OK, can modify non-const element
 
    auto v2 = x | std::views::drop(2) | std::views::as_const;
    assert(v2.back() == 5);
    // v2[0]++; // Compile-time error, cannot modify read-only element
}
[edit] See also

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4