|
Range primitives | |||||||
|
Range concepts | |||||||||||||||||||
|
Range factories | |||||||||
|
Range adaptors | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Helper items | |||||||||||||||||
|
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 orranges::enable_borrowed_range<std::remove_cv_t<T>> istrue, then a call to
In all other cases, a call to | (since C++23) |
The return type modelsstd::input_or_output_iterator andconstant-iterator
(since C++23) in all cases.
Contents |
The nameranges::cbegin
denotes acustomization point object, which is a constfunction object of aliteralsemiregular
class type. SeeCustomizationPointObject for details.
For an lvalue rangee of typeT,ranges::cbegin(e) is equivalent to
(until C++23) | |
| (since C++23) |
#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}
(C++20) | returns an iterator to the beginning of a range (customization point object)[edit] |
(C++11)(C++14) | returns an iterator to the beginning of a container or array (function template)[edit] |