Another small thing I found this useful for was outputting multiple variables for debugging purposes. I wanted to output variables and their respective values in one call. We can use FOR_EACH to help us achieve this.
#define STRINGIFY(x) #x
#define DUMP_VAR(x) std::cout << STRINGIFY(x) << ": " << x << std::endl;
#define DUMP_VARS(...) \
std::cout << __FILE__ << " (Line #" __LINE__ << ")" << std::endl; \
FOR_EACH(DUMP_VAR, __VA_ARGS__)
int main()
{
int a = 10;
string b ("Foo");
float c = 1.4f;
DUMP_VARS(a, b, c);
/*
Foo.cpp (Line #11)
a: 10;
b: Foo;
c: 1.4f;
*/
}