%module xxx namespace ns { class OuterClass { public: template struct Inner1 { }; Inner1 useInner1(const Inner1& inner) { return inner; } #ifdef SWIG %template(T_OuterClassInner1Double) Inner1; #endif int iii; }; }