DMD can implicitly convert class pointer to the bool. Is it bug or terrible feature?
Maxim Fomin
maxim at maxim-fomin.ru
Sun Nov 24 06:50:27 PST 2013
On Sunday, 24 November 2013 at 14:32:16 UTC, ilya-stromberg wrote:
> On Sunday, 24 November 2013 at 14:16:39 UTC, bearophile wrote:
>> Maxim Fomin:
>>
>>> This is neither bug not a terribale feature.
>>
>> I think the implicit question of ilya-stromberg was: how much
>> bug-prone is this language feature?
>
> Yes, exactly. I personally was VERY surprised. My code example
> from real life:
>
> class Foo
> {
> }
>
> class Bar
> {
> Foo f;
>
> void bar()
> {
> //variable was wrongly commented here
> //bool f = true;
>
> if(f)
> {
> //Oops!
> }
> }
> }
This is identifiers shadowing issue. In best case you could not
define boolean f, so the problem would not arise in a first
place. Anyway, many artifical examples can be provided which
shows that some features behave in unexpected ways which is not a
reason that they are bad.
More information about the Digitalmars-d
mailing list