std::begin(std::valarray)(3)

NAME
std::begin(std::valarray) - std::begin(std::valarray)

Synopsis
   template< class T > (1) (since C++11)
   /*unspecified1*/ begin( valarray<T>& v );
   template< class T > (2) (since C++11)
   /*unspecified2*/ begin( const valarray<T>& v );
   The overload of std::begin for valarray returns an iterator of unspecified type
   referring to the first element in the numeric array.
   1) The return type meets the requirements of mutable LegacyRandomAccessIterator.
   2) The return type meets the requirements of constant LegacyRandomAccessIterator.
   The iterator obtained from this function is invalidated when the member function
   resize() is called on the array v or when the lifetime of v ends, whichever comes
   first.

Parameters
   v - a numeric array

Return value
   Iterator to the first value in the numeric array.

Exceptions
   May throw implementation-defined exceptions.

Notes
   Unlike other functions that take std::valarray arguments, begin() cannot accept the
   replacement types (such as the types produced by expression templates) that may be
   returned from expressions involving valarrays: std::begin(v1 + v2) is not portable,
   std::begin(std::valarray<T>(v1 + v2)) has to be used instead.
   The intent of this function is to allow range for loops to work with valarrays, not
   to provide container semantics.

Example
// Run this code
 #include <iostream>
 #include <valarray>
 #include <algorithm>
 auto show = [](std::valarray<int> const& v) {
     std::for_each(std::begin(v), std::end(v), [](int c) {
         std::cout << c << ' ';
     });
     std::cout << '\n';
 };
 int main()
 {
     const std::valarray<int> x { 47, 70, 37, 52, 90, 23, 17, 33, 22, 16, 21, 4 };
     const std::valarray<int> y { 25, 31, 71, 56, 21, 21, 15, 34, 21, 27, 12, 6 };
     show(x);
     show(y);
     const std::valarray<int> z { x + y };
     std::for_each(std::begin(z), std::end(z), [](char c) { std::cout << c; });
 }

Output:
 47 70 37 52 90 23 17 33 22 16 21 4
 25 31 71 56 21 21 15 34 21 27 12 6
 Hello, C++!

See also
   std::end(std::valarray) specializes std::end
   (C++11) (function template)