On Wednesday, 25 April 2018 at 11:26:40 UTC, Vijay Nayar wrote:
On Wednesday, 25 April 2018 at 10:25:11 UTC, Simen Kjærås wrote:
In the general case, the issue is unsolvable, since the
relationship between template parameters and alias results may
be arbitrarily complex. A simple degenerate case is this:
Ok, wow, you weren't kidding. That becomes really complex
really fast.
In that case, is the general rule of thumb that programmers
should not use aliases for templated types when specifying
template function parameters? No implicit type inference is
done on the return type or on local variables, so these alias
seem fine enough there. Or should they just be entirely avoided
to avoid these kinds of problems?
Right now, yeah, that's probably the most sensible rule to follow.
If someone were to write a DIP, the simple cases (which I'd guess
constitute >90% of realistic use cases) could be handled. It
would have to be somewhat limited, and identifying a sensible set
of limitations would be an important part of the work.
I'm not sure exactly what's the best way to implement this -
maybe a lowering from
auto foo(T)(Vector3!T arg) {}
to
auto foo(T)(Vector!(T,3) arg) {}
That would only work if there's a single overload and no static
ifs involved. For a solution that works with static ifs or
overloads, something must be done about how the matching itself
works.
On Wednesday, 25 April 2018 at 11:42:12 UTC, ag0aep6g wrote:
https://issues.dlang.org/show_bug.cgi?id=1807
Thanks. :)
--
Simen