It seems to me, given the design constraints (backwards compatibility, desire to overload on bool) the choices were far from as bad as you paint it.


I understand the design forces at work that lead to this mess. Incrementing a flag as a one way latch was a common idiom in a lot of older code.

What I really question is whether the increased complexity is worth it. I don't think it is. They had a choice between not having a bool and leaving the branching consitent with C, or adding a proper bool type and breaking a bunch of code.

The gutless wonderdogs did neither. This is my beef.

I dislike inconsistency and C++ has it in spades. The whole thing is a sign of muzzy headed thinking and committee dynamics.

Compare C++ to Objective C and the amateurishness of C++'s design shines like the top of the Chrysler Building.