template <class T, class Abi, class BinaryOperation = plus<>>
T reduce(const simd<T, Abi>& x, BinaryOperation binary_op = {});
Requires:binary_op shall be callable with two arguments of type T returning T, or callable with two arguments of type simd<T, A1> returning simd<T, A1> for every A1 that is an ABI tag type.
Why isn't this “Requires:binary_op shall be callable with two arguments of type simd<T, A1> returning simd<T, A1> for every A1 that is an ABI tag type.”?
Why isn't this “Requires:
binary_op
shall be callable with two arguments of typesimd<T, A1>
returningsimd<T, A1>
for everyA1
that is an ABI tag type.”?