3 ms·
Well, it is visible in documentation, but even those can be hard to parse: uint startsWith(alias pred = (a, b) => a == b, Range, Needles...)(Range doesThisSta
by skocznymroczny 7y ago
Well, it is visible in documentation, but even those can be hard to parse:
uint startsWith(alias pred = (a, b) => a == b, Range, Needles...)(Range doesThisStart, Needles withOneOfThese)
if (isInputRange!Range && (Needles.length > 1) && is(typeof(.startsWith!pred(doesThisStart, withOneOfThese[0])) : bool) && is(typeof(.startsWith!pred(doesThisStart, withOneOfThese[1..$])) : uint));
- gmueckl 7y agoYou did pick a particularly nasty example for that one. I do agree that it is not so easy to read these constraints. It can also be a bit frustrating when you need to chase down why exactly a particular line of code doesn't meet such a constraint. Tests like isInputRange are themselves fairly involved expressions and in the worst case, you end up staring at those after a template instantiation failed.