No-seed version. The first element of r is used as the seed's value.
For each function f in fun, the corresponding
seed type S is Unqual!(typeof(f(e, e))), where e is an
element of r: ElementType!R for ranges,
and ForeachType!R otherwise.
Once S has been determined, then Ss = e; and s = f(s, e);
must both be legal.
No-seed version. The first element of r is used as the seed's value.
For each function f in fun, the corresponding seed type S is Unqual!(typeof(f(e, e))), where e is an element of r: ElementType!R for ranges, and ForeachType!R otherwise.
Once S has been determined, then S s = e; and s = f(s, e); must both be legal.
If r is empty, an Exception is thrown.