std::ranges::cbegin
Defined in header <ranges> | ||
Defined in header <iterator> | ||
inlinenamespace/* unspecified */{ inlineconstexpr/* unspecified */ cbegin =/* unspecified */; | (since C++20) (customization point object) | |
Call signature | ||
template<class T > requires /* see below */ | (since C++20) | |
Returns an iterator to the first element of the const-qualified argument. | (until C++23) |
Returns a constant iterator to the first element of the argument. | (since C++23) |
Let
A call to | (until C++23) |
If the argument is an lvalue or ranges::enable_borrowed_range<std::remove_cv_t<T>> is true, then a call to
In all other cases, a call to | (since C++23) |
The return type models std::input_or_output_iterator and constant-iterator
(since C++23) in all cases.
Contents |
Customization point objects
The name ranges::cbegin
denotes a customization point object, which is a const function object of a literalsemiregular
class type. See CustomizationPointObject for details.
[edit]Notes
For an lvalue range e of type T, ranges::cbegin(e) is equivalent to
(until C++23) | |
| (since C++23) |
[edit]Example
#include <cassert>#include <ranges>#include <vector> int main(){std::vector v{3, 1, 4};auto vi = std::ranges::cbegin(v);assert(3==*vi);++vi;// OK, constant-iterator object is mutableassert(1==*vi);// *vi = 13; // Error: constant-iterator points to an immutable element int a[]{3, 1, 4};auto ai = std::ranges::cbegin(a);// cbegin works with C-arrays as wellassert(3==*ai and *(ai +1)==1);// *ai = 13; // Error: read-only variable is not assignable}
[edit]See also
(C++20) | returns an iterator to the beginning of a range (customization point object) |
(C++11)(C++14) | returns an iterator to the beginning of a container or array (function template) |