Second CT-Parameter of isRange Predicates
Atila Neves via Digitalmars-d
digitalmars-d at puremagic.com
Mon Nov 2 07:33:52 PST 2015
On Monday, 2 November 2015 at 14:33:44 UTC, Andrei Alexandrescu
wrote:
>> https://github.com/D-Programming-Language/phobos/pull/3786
>
> Sent an ICBM its way. -- Andrei
I agree with the ICBM that it definitely doesn't scale. But...
there should be an easier way to replace arrays of Widget with a
range. If not, most people (including me on lazy days) will just
write `Widget[]` and be done with it. I don't know what the best
solution is.
I'm saying this as someone who's written plenty of D code that
takes arrays as arguments not because it's right, but because it
was a lot easier and I didn't want it getting in the way of
whatever it is I was trying to accomplish.. 90% of my usage of
`std.array.array` is depressingly enough at the end of an
algorithm UFCS chain because either I'm passing this to a
function expecting `T[]` or to a struct that stores `T[]`. It's
not pretty, performant, or right, but it's easy and I'm lazy.
And that's for writing code. With regards to reading, it's been
pointed out multiple times that beginners will struggle with
template contraints on function signatures. It'll be the case
much more often if every function and struct wanting a range of
Ts is suddenly `if(isInputRange!R && is(ElementType!R == T))`.
Atila
More information about the Digitalmars-d
mailing list