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