On Wednesday, 4 November 2015 at 10:37:54 UTC, Atila Neves wrote:
On Tuesday, 3 November 2015 at 10:08:04 UTC, Jonathan M Davis
wrote:
On Tuesday, 3 November 2015 at 08:37:22 UTC, Atila Neves wrote:
Am I the only one who ever writes `int[]` or `Struct[]` in a
function signature?
Probably not, but I write very little code that operates on
arrays rather than ranges. If I do, it's usually in a short
program or script where I'm doing something that I don't
intend to ever reuse, and there's no point in making it
generic.
- Jonathan M Davis
I'd _like_ to write functions that take ranges instead; that's
why I want to make it easier to declare "this parameter is an
input range of T".
I confess that I don't find is(ElementType!E == Foo) to be
particularly onerous. If that's what I need, then I do it and
move on. It takes less time to write than this post, and it's not
that uncommon that far more complicated conditions are required
for template constraints anyway.
So, while I can understand why you'd want it to be simpler, it
really doesn't seem like a big deal to me. And for that matter,
if you really do want it to be simpler, there's nothing stopping
you from creating your own traits to test with rather than just
those in Phobos. It just means that it's not something that's
going to be commonly used.
IMHO, if anything is annoying about writing template constraints,
it's dealing with several overloads, since that frequently
requires that you essentially put the negation of each overload
in the other overloads.
- Jonathan M Davis