 st8b7c:f320:99b9:690f:4595:cd17:293a:c069ranges8b7c:f320:99b9:690f:4595:cd17:293a:c069gin    Defined in header <ranges>         inline namespace /*unspecified*/ {
    inline constexpr /*unspecified*/ cbegin = /*unspecified*/;
}
    (since C++20) (customization point object)     Call signature      template< class T >
    requires /* see below */
constexpr st8b7c:f320:99b9:690f:4595:cd17:293a:c069input_or_output_iterator auto cbegin( T&& t );
    (since C++20)    Returns an iterator to the first element of the const-qualified argument.

Let CT be.

 const st8b7c:f320:99b9:690f:4595:cd17:293a:c069remove_reference_t<T>& if the argument is a lvalue (i.e. T is an lvalue reference type), 
 const T otherwise, 
 a call to ranges8b7c:f320:99b9:690f:4595:cd17:293a:c069gin is expression-equivalent to ranges8b7c:f320:99b9:690f:4595:cd17:293a:c069gin(static_cast<CT&&>(t)).
The return type models st8b7c:f320:99b9:690f:4595:cd17:293a:c069input_or_output_iterator in both cases.
 Expression-equivalent Expression e is expression-equivalent to expression f, if.


e and f have the same effects, and 
either both are constant subexpressions or else neither is a constant subexpression, and 
either both are potentially-throwing or else neither is potentially-throwing (i.e. noexcept(e) == noexcept(f)). 
   Customization point objects  The name ranges8b7c:f320:99b9:690f:4595:cd17:293a:c069gin denotes a customization point object, which is a const function object of a literal semiregular class type. For exposition purposes, the cv-unqualified version of its type is denoted as __cbegin_fn.
All instances of __cbegin_fn are equal. The effects of invoking different instances of type __cbegin_fn on the same arguments are equivalent, regardless of whether the expression denoting the instance is an lvalue or rvalue, and is const-qualified or not (however, a volatile-qualified instance is not required to be invocable). Thus, ranges8b7c:f320:99b9:690f:4595:cd17:293a:c069gin can be copied freely and its copies can be used interchangeably.
Given a set of types Args..., if st8b7c:f320:99b9:690f:4595:cd17:293a:c069declval<Args>()... meet the requirements for arguments to ranges8b7c:f320:99b9:690f:4595:cd17:293a:c069gin above, __cbegin_fn models.

 st8b7c:f320:99b9:690f:4595:cd17:293a:c069invocable<__cbegin_fn, Args...>, 
 st8b7c:f320:99b9:690f:4595:cd17:293a:c069invocable<const __cbegin_fn, Args...>, 
 st8b7c:f320:99b9:690f:4595:cd17:293a:c069invocable<__cbegin_fn&, Args...>, and 
 st8b7c:f320:99b9:690f:4595:cd17:293a:c069invocable<const __cbegin_fn&, Args...>. 
 Otherwise, no function call operator of __cbegin_fn participates in overload resolution.
 Example  #include <iostream>
#include <ranges>
#include <vector>
 
int main() 
{
    st8b7c:f320:99b9:690f:4595:cd17:293a:c069vector<int> v = { 3, 1, 4 };
    auto vi = st8b7c:f320:99b9:690f:4595:cd17:293a:c069ranges8b7c:f320:99b9:690f:4595:cd17:293a:c069gin(v);
    st8b7c:f320:99b9:690f:4595:cd17:293a:c069cout << *vi << '\n'; 
    // *vi = 42; // Error: read-only variable is not assignable
 
    int a[] = { -5, 10, 15 };
    auto ai = st8b7c:f320:99b9:690f:4595:cd17:293a:c069ranges8b7c:f320:99b9:690f:4595:cd17:293a:c069gin(a);
    st8b7c:f320:99b9:690f:4595:cd17:293a:c069cout << *ai << '\n';
    // *ai = 42; // Error: read-only variable is not assignable
} Output:
3
-5   See also     ranges8b7c:f320:99b9:690f:4595:cd17:293a:c069gin
(C++20)   returns an iterator to the beginning of a range  (customization point object) 
    begincbegin
(C++11)(C++14)   returns an iterator to the beginning of a container or array  (function template) 
  

    
{'path': 'public/docs/cpp/ranges/cbegin.html', 'source': 'DevDocs.IO'}