on the idiocy of the bool type.
Its implementation and promotion rules are just dumb.
Repeat after me - there is no bool type, there is no bool type, there is no bool type.
Every idiot C programmer that ever typedef'd a bool (or worse, #defined's TRUE or FALSE) should burn in hell.
0 is false.
!false is true.
Live with it.
As for polymorphism - you can make your own in C with about the same amount of work.