DMD can implicitly convert class pointer to the bool. Is it bug or terrible feature?

ilya-stromberg ilya-stromberg-2009 at yandex.ru
Sun Nov 24 06:24:07 PST 2013


On Sunday, 24 November 2013 at 14:17:50 UTC, Dicebot wrote:
> Not exactly. It is all about "if" condition. AFAIK, D defines 
> that condition `if(X)` get re-written to `if(cast(bool)X)` 
> before semantic pass. So it is kind of implicit explicit 
> conversion :)

Not exactly.

Code:

bool b = f;

DMD output:

Error: cannot implicitly convert expression (f) of type Foo to 
bool


But code:

bool b = !f;

compiles.


More information about the Digitalmars-d mailing list