Sorry for such a cursory answer. I believe I can say if-sentences are
non-Julian in this case because the final machine code needs one version
per possible type. The machine code will be type stable, just very very
long and slow if you don`t do the smart thinking for the compiler. I have
already spent some time looking at the generated code and optimizing it.
The compiler seems to do a good job with type stability and "if" statements
of this type
*y = < 0 ? 0 : 1*
where "a good job" means socks are blown off and whatnot.
But macros don`t know a thing about type. They are working before concrete
types are even born.