%module template_templated_constructors %inline %{ namespace ConstructSpace { class TConstructor1 { public: template TConstructor1(T val) {} ~TConstructor1() {} }; class TConstructor2 { public: TConstructor2() {} template TConstructor2(T val) {} ~TConstructor2() {} }; template class TClass1 { public: template TClass1(Y t) {} }; template class TClass2 { public: TClass2() {} template TClass2(Y t) {} }; } %} %extend ConstructSpace::TConstructor1 { %template(TConstructor1) TConstructor1; } %template(TConstructor2) ConstructSpace::TConstructor2::TConstructor2; %template(TClass1Int) ConstructSpace::TClass1; %extend ConstructSpace::TClass1 { %template(TClass1Int) TClass1; } %template(TClass2Int) ConstructSpace::TClass2; %extend ConstructSpace::TClass2 { %template(TClass2Int) TClass2; }