On Sunday, 7 February 2016 at 02:11:15 UTC, Marco Leise wrote:
Why do I insist on the return type? Because surprisingly simple
code breaks if it doesn't match. Not everything can be covered
by runtime conversions in D. It still took me a while to come
up with something obvious:
uint[Tuple!(uint, ulong)] hash;
auto tup = tuple(1u, 2u, 3UL);
hash[tup.slice!(1, 3)] = tup[0];
compiles? works?
original Tuple : yes no
Saurabh Das changes: yes yes
your changes : no no
Thank you for the example.
If multiple alias this ever makes it into the language (see
https://wiki.dlang.org/DIP66 and
https://github.com/D-Programming-Language/dmd/pull/3998), this
could be fixed quite easily. But, I do not see any way to fix it
with the tools currently available.