%module template_template_template_parameters %inline %{ // Github issue #624 class CustomAttrs { public: enum dattr1d {pos, vel, someCustomCaseVar, d1dLast}; }; template class A { public: TT attributes; virtual ~A() {} }; template class A, class T> class B : public A { public: virtual void BMethod(T t_parm, A at_parm) {} }; template class, class> class Op, template class X, class Y> class C : public Op { public: virtual void CMethod(Y y_parm, Op opxy_parm) {} }; template class K2, class K3> class L, template class M, class N> class D : public L { public: virtual void DMethod(N n_parm, L lmn_parm) {} }; %} %{ template class A; template class B; template class C; template class D; %} %template(AC) A; %template(BAC) B; %template(CBAC) C; %template(DBAC) D;