implicit conversion
Jonathan M Davis via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Aug 12 13:23:30 PDT 2014
On Tuesday, 12 August 2014 at 19:03:58 UTC, H. S. Teoh via
Digitalmars-d-learn wrote:
> tl;dr: there are so many ways template code can go wrong, that
> I don't
> it justifies blaming alias this for problems.
Allowing implicit conversions makes the problem much worse IMHO.
It makes it far too easy to write a template constraint which
passes due to the implicit conversion (even if an implicit
conversion wasn't explicitly checked for) but then have the
function fail to work properly because the implicit conversion
never actually takes place within the function (and if the
template constraint doesn't explicitly test for an implicit
conversion, then the argument that the value should have been
explicitly converted doesn't hold). Fortunately, in many cases,
the result is a compilation error rather than weird behavior, but
in some cases, it will be weird behavior - especially when the
code involved is highly templatized and generic.
I'm not even vaguely convinced that allowing implicit conversions
is worth the pain that they cause with templated code. Sure, they
have their uses, and it would be a loss to have nothing like
alias this, but on the whole, I'd much rather pay the cost of
having no implicit conversions than having to deal with the havoc
they wreak on templated code.
- Jonathan M Davis
More information about the Digitalmars-d-learn
mailing list