On Wednesday, 5 November 2014 at 16:54:38 UTC, Marc Schütz wrote:
My idea was something along these lines (untested):
template extractorFun(alias extractor) {
static if(is(typeof(extractor) : string)) {
auto ref extractorFun(T)(auto ref T a) {
mixin("with(a) { return " ~ extractor ~ "; }");
}
} else {
alias extractorFun = extractor;
}
}
alias fn = extractorFun!extractor;
r.sort!((a, b) => (fn(a) < fn(b)));
Thanks, I'll use this!
Still, is it even possible to extend extractor to become variadic
or do I have to write a number of explicit overloads
1: void sortBy(alias xtr, R)(R r)
2: void sortBy(alias xtrA, alias xtrB, R)(R r)
3: void sortBy(alias xtrA, alias xtrB, alias xtrC, R)(R r)
etc
?