Hi, I am writing a simple Lua JIT toy by using the GGC JIT. and Lua has the grammar "a and b", the usage just like below -------- local a = nil print(a and a.b) a = { b = 1 } print(a and a.b) -------- it will print -------- nil 1 -------- it is different with the C ¡°&&¡± grammar, but more like the C ternary condition operator "a ? a : b". and I didn't find the relevant API in GCC JIT, so it may only be used to use alternatives "({int _temp; if (cond) _temp=then; else _temp=otherwise; _temp;})" but, it can not use in the global variable, here is the C++ code -------- #define GET_SIZE(cond, then, otherwise) ({int _temp; if (cond) _temp=then; else _temp=otherwise; _temp;}) std::string *s = 0; //auto size = GET_SIZE(s, s->size(), 0); // compile fail : statement-expressions are not allowed outside functions nor in template-argument lists auto size = auto size = s ? s->size() : 0; // compile ok int main() { std::cout << GET_SIZE(s, s->size(), 0) << std::endl; // compile ok return 0; } -------- so is there any other way to implement "a and b"? or maybe add ternary condition operator support in GCC JIT? thanks