Found this example here: https://marc.info/?l=boost&m=118835769257658&w=2
#define A(m) m( B(f)
#define B(x) A(x)
#define C(x) < x >
A(C) ) *
clang, GCC, MSVC, and tinycc output:
arocc output:
The post says that our output is correct; and that "Very very few preprocessors get this completely right". Not sure if this is a bug or not.