typedef ptr {} define b[] { c![]; a![]; } define a[] { c![]; a(*a a); } define c[] { c(*c c); } typedef d { b![]; c(*d d) {} } main() { d d = d!{}; d.c(); }