# std::valarray::operator+=,-=,*=,/=,%=,&=,|=,<<=,>>=

From cppreference.com
< cpp‎ | numeric‎ | valarray

valarray<T> operator+=( const valarray<T>& v );

valarray<T> operator-=( const valarray<T>& v );
valarray<T> operator*=( const valarray<T>& v );
valarray<T> operator/=( const valarray<T>& v );
valarray<T> operator%=( const valarray<T>& v );
valarray<T> operator&=( const valarray<T>& v );
valarray<T> operator|=( const valarray<T>& v );
valarray<T> operator^=( const valarray<T>& v );
valarray<T> operator<<=( const valarray<T>& v );

valarray<T> operator>>=( const valarray<T>& v );

(1)

valarray<T> operator+=( const T& val );

valarray<T> operator-=( const T& val );
valarray<T> operator*=( const T& val );
valarray<T> operator/=( const T& val );
valarray<T> operator%=( const T& val );
valarray<T> operator&=( const T& val );
valarray<T> operator|=( const T& val );
valarray<T> operator^=( const T& val );
valarray<T> operator<<=( const T& val );

valarray<T> operator>>=( const T& val );

(2)

Applies compound assignment operators to each element in the numeric array.

1) Each element is assigned value obtained by applying the corresponding operator to the previous value of the element and corresponding element from `v`.

The behavior is undefined if size() != v.size()

The behavior is undefined if any of the values in `v` is computed during the assignment and depends on any of the values in *this, that is, the expression on the right side of the assignment refers to a variable in the left side of the assignment.

2) Each element is assigned value obtained by applying the corresponding operator to the previous value of the element and the value of `val`.

### Parameters

v | - | another numeric array
val | - | a value

### Return value

*this

### Exceptions

(none)

### Notes

Each of the operators can only be instantiated if the following requirements are met:

  - The indicated operator can be applied to type `T`
  - The result value can be unambiguously converted to `T` (1-3) or bool (4).

The function can be implemented with the return type different from std::valarray. In this case, the replacement type has the following properties:

  - All const member functions of std::valarray are provided.
  - std::valarray, std::slice_array, std::gslice_array, std::mask_array and std::indirect_array can be constructed from the replacement type.
  - All functions accepting an argument of type const std::valarray& except `begin()` and `end()` (since C++14) should also accept the replacement type.
  - All functions accepting two arguments of type const std::valarray& should accept every combination of const std::valarray& and the replacement type.
  - The return type does not add more than two levels of template nesting over the most deeply-nested argument type.

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/numeric/valarray/operator_arith2&oldid=51082"