// CType.h namespace CType { typedef struct { int a, b, c; } Specific_C_Type; } // CFunc.h namespace CType { extern "C" { void _C_Func_Does_Shit ( // some params Specific_C_Type* a_param ); } } // CPPProxyTemplate.h template struct ProxyTemplate : public ProxyStruct { ProxyTemplate() {}; ProxyTemplate(const ProxyStruct& e) : ProxyStruct(e) {}; } // CPPProxyType.h namespace CPPType { struct Specific_C_Type_Proxy { int a, b, c; }; } // CPPType.h namespace CPPType { using Specific_C_Type = ProxyTemplate; } // CPPFunc.h namespace CPPType { void Do_C_Func( // some params Specific_C_Type& a_param ); }