http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57666
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to thunderliu from comment #0) > Non-member operators for valarray<> returns instance of _Expr<> (lazy > evaluation?), instead of another valarray<>. This is non-conforming but > probably not a bug. 26.6.1 [valarray.syn]/3 "Any function returning a valarray<T> is permitted to return an object of another type, provided all the const member functions of valarray<T> are also applicable to this type."