MSVC fails to compile template operator valarray because (i believe) the type is not seen in template argument of the operator.
Minimal example:
https://gcc.godbolt.org/z/sPpQFL
I believe it is a compiler bug but workaround is not that complex so I hope it can be merged anyway