#include #include #include #include #include template struct Bar; template struct Foo { const T *data; }; template struct Tuple { const T *a; const E *b; }; template using Indirection = Tuple; extern "C" { void root(Foo a, Foo b, Bar c, Foo> d, Bar> e, Bar> f, Tuple, float> g, Indirection h); } // extern "C"