1 matches bool, 2 matches long

Rob T alanb at ucora.com
Mon Apr 29 11:50:02 PDT 2013


On Sunday, 28 April 2013 at 13:38:53 UTC, Andrei Alexandrescu 
wrote:
[...]
> If enough differences accumulate to make bool quite a different 
> type from a regular integral, then the matter of overloading 
> with long, conversion from literals 1 and 0 etc. may be 
> reopened. Even then, it would be a difficult decision.

I agree with most of what you said in your full post, except that 
in the quote above you are suggesting that there's a difficult 
decision to be made in the case of bool being it's own type 
rather than an integral type.

The opposite should be the case, where the decision to keep it as 
an integral is a difficult to defend.

I don't see where the difficulty is, because unless bool can 
exactly be treated as an integral, then it simply is not an 
integral, and unless it is an integral, it cannot be freely 
interchanged with the integrals.

The arguments in defense if bool as an integral are IMO weak.

For example, Walter mentioned the case of char successfully being 
treated as an integral type rather than a special case "char' 
type. However, are there any differences between what char does 
and what byte does that interfere with each other? If char 
performs exactly like a integral type, then you can convincingly 
argue that it is an integral type.

Can the same thing with char be said about bool? No. You can only 
say that bool does share some, but not all the characteristics if 
an integral.

The other argument in favor boils down to a matter of convenience 
under some circumstances. Yes, there are a few cases where it is 
advantageous to interchange boolean 'true' and 'false' with 
integral 1 and 0, however the vast majority of uses do not rely 
on such an interchange, and even if such interchanges are used 
often, bool still has significant differences of behavior that 
exclude it from being considered as a fully interchangeable 
integral type (eg truncation behavior and differences with 
operators).

The best you can argue for, is that under some situations, bool 
should be freely interchanged with regular integrals, however 
that's not going to be true for all cases.

The conclusion ought to be that unless bool can be adjusted into 
behaving exactly like all the other integrals, then it simply 
cannot be freely interchanged as an integral in all cases, i.e., 
maybe OK in some cases, but certainly not all.

--rt


More information about the Digitalmars-d mailing list