Trying Multiple Aggregate reduce
"Nordlöw"
per.nordlow at gmail.com
Mon Mar 31 14:53:11 PDT 2014
I'm trying to figure out how to use reduce with multiply funs.
Here's my try on minmaxElement:
import std.typecons: tuple;
/** Returns: Tuple of Minmum and Maximum Element in X. */
auto minmaxElement(alias F = min, alias G = max, R)(in R range)
@safe pure nothrow if (isInputRange!R)
{
return reduce!(F, G)(tuple(ElementType!R.max,
ElementType!R.min), range);
}
unittest { assert([1, 2, 3].minmaxElement == tuple(1, 3)); }
which errors as
/home/per/opt/x86_64-unknown-linux-gnu/dmd/bin/../include/d2/std/algorithm.d(774,29):
Error: can only initialize const member _expand_field_0 inside
constructor
/home/per/opt/x86_64-unknown-linux-gnu/dmd/bin/../include/d2/std/algorithm.d(774,29):
Error: can only initialize const member _expand_field_1 inside
constructor
algorithm_ex.d(157,25): Error: template instance
std.algorithm.reduce!(min, max).reduce!(Tuple!(const(int),
const(int)), const(int)[]) error instantiating
algorithm_ex.d(160,28): instantiated from here:
minmaxElement!(min, max, const(int)[])
If I replace ElementType!R.min and ElementType!R.max with a
values, say 0 and 1 it compiles. What is going on here?
This seems related:
http://forum.dlang.org/thread/bug-10408-3@http.d.puremagic.com/issues/
More information about the Digitalmars-d-learn
mailing list