Here's one of many examples from Newlib's <math.h> that motivated this: #define isgreater(x,y) (__extension__ ({__typeof__(x) __x = (x); __typeof__(y) __y = (y); !isunordered(__x,__y) && (__x > __y);})) http://reviews.llvm.org/D5080