These assignment operators have reference semantics, assigning the values
of the argument array elements to selected elements of the
valarray<T>
object to which it refers.
int addr[]={2, 3, 1, 4, 4};
valarray<size_t> indirect(addr, 5);
valarray<double> a(0., 10), b(1., 5);
a[indirect]= b;
results in undefined behavior since element 4 is specified twice in the
indirection.