#include #include #include #include #include struct Opaque; template struct Option; struct Foo { const Opaque *x; Opaque *y; void (*z)(); void (**zz)(); }; union Bar { const Opaque *x; Opaque *y; void (*z)(); void (**zz)(); }; extern "C" { void root(const Opaque *a, Opaque *b, Foo c, Bar d, Option *e, void (*f)(const Opaque*)); } // extern "C"