ICE_P
#define CHX_P(X) __builtin_choose_expr(ICE_P(X), 1, 0)
#define CST_P(X) __builtin_constant_p(ICE_P(X))
#define TEST(R, X) _Static_assert(ICE_P(X) == R, "ICE_P(" #X ") => " #R); \
_Static_assert(ICE_P(ICE_P(X)), "ICE_P2(" #X ")"); \
#define T(x) __builtin_choose_expr(ICE_P(x), 1, 0)