template<class T>
valarray<T> operator^(const valarray<T>& x,
const valarray<T>& y);
template<class T>
valarray<T> operator^(const valarray<T> x,
const T& y);
template<class T>
valarray<T> operator^(const T& x,
const valarray<T>& y);
The first template operator returns an object of class valarray<T>, each of whose elements I is x[I] ^ y[I]. The second template operator stores in element I x[I] ^ y. The third template operator stores in element I x ^ y[I].