#include #include #include #include #include struct A { int32_t namespace_; float float_; }; struct B { int32_t namespace_; float float_; }; struct C { enum class Tag : uint8_t { D, }; struct D_Body { int32_t namespace_; float float_; }; Tag tag; union { D_Body d; }; }; struct E { enum class Tag : uint8_t { Double, Float, }; struct Double_Body { double _0; }; struct Float_Body { float _0; }; Tag tag; union { Double_Body double_; Float_Body float_; }; }; struct F { enum class Tag : uint8_t { double_, float_, }; struct double_Body { double _0; }; struct float_Body { float _0; }; Tag tag; union { double_Body double_; float_Body float_; }; }; extern "C" { void root(A a, B b, C c, E e, F f, int32_t namespace_, float float_); } // extern "C"