It needs a constraint:
auto firstDistinct(Range)(Range r, in size_t n)
if (isInputRange!Range) {
bool[ForeachType!Range] mySet;
return r.filter!((k) {
if (k in mySet)
return false;
mySet[k] = true;
return true;
}).take(n);
}
Bye,
bearophile