Operator overloading, structs
Denis Koroskin
2korden at gmail.com
Thu Jun 4 11:20:55 PDT 2009
On Thu, 04 Jun 2009 22:10:58 +0400, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> wrote:
> Max Samukha wrote:
>> On Thu, 04 Jun 2009 10:41:31 -0500, Andrei Alexandrescu
>> <SeeWebsiteForEmail at erdani.org> wrote:
>>
>>> You are mistakenly presupposing that if() takes a bool. In reality
>>> if() accepts a bool, an integral, a floating-point type, a pointer, an
>>> array, or a class reference.
>> or delegate
>
> I was sure I forgot something... and hash too. Anything that can be
> compared against 0 or null.
>
> Andrei
Is it considered a good practice?
Technically, the following construct is not exactly portable:
float f = ..;
if (f) {
}
because C (nor D) standard doesn't guaranty that float(0) will be
implemented as "all bits set to 0" on target platform (although it
currently holds true).
I believe it is better to use an epsilon, instead:
if (fabsf(f) < epsilon) {
}
unless you need to compare strictly against 0:
if (f == 0) {
}
More information about the Digitalmars-d
mailing list