Есть ли способ защитить этот MACRO от операторов if / for с незаданной областью?
#define FOO(X, Y, ...) X->bar(_##Y->thatVar, __VA_ARGS__);\
post_op(X, Y)
Порядок bar и post_op важен, а результат post_op игнорируется приложением
т.е.
if(true)
auto z = FOO(a,b);
else //compile error
abort();