Yet another slap on the hand by implicit bool to int conversions
Steven Schveighoffer
schveiguy at yahoo.com
Mon Jun 20 06:31:06 PDT 2011
On Mon, 20 Jun 2011 09:17:56 -0400, Daniel Gibson <metalcaedes at gmail.com>
wrote:
> Am 20.06.2011 14:47, schrieb Steven Schveighoffer:
>> On Sun, 19 Jun 2011 19:42:22 -0400, bearophile
>> <bearophileHUGS at lycos.com> wrote:
>>
>>> Timon Gehr:
>>>
>>>> Maybe DMD could warn on nonsense of the form x != x.
>>>
>>> Right. This thread is very good food for this enhancement request of
>>> mine:
>>> http://d.puremagic.com/issues/show_bug.cgi?id=5540
>>>
>>> Vote for this enhancement :-)
>>
>> I don't think this is a good idea. Generic code could result in an
>> error where there shouldn't be. For example:
>>
>> int foo(T)()
>> {
>> if(T.sizeof == char.sizeof)
>> ...
>> }
>>
>> Would this fail to compile where T == char? What about if T == ubyte?
>>
>> Generic programming sometimes results in silly code that is perfectly
>> acceptable as generic code, and we need to take this into account before
>> making decisions assuming a person is writing the code.
>>
>> -Steve
>
> It probably makes more sense to use static if in that case - and static
> if could be an exception for these rules.
static if has different semantics than if (it doesn't create a scope), so
maybe I want to use if. But even so, static if is just as likely to
contain these bugs as a normal if. Both use an expression to determine
whether the if should run or not, and there are quite a few constructs
that can be used in a static if expression.
-Steve
More information about the Digitalmars-d
mailing list