%module template_template_parameters %inline %{ namespace pfc { template class t_alloc> class array_t {}; template class alloc_fast { public: typedef t_item alloc_type; }; } template class list_impl_t {}; template class t_alloc = pfc::alloc_fast > class list_tt : public list_impl_t > { public: t_item item; // typename t_alloc::alloc_type allotype; // SWIG can't handle this yet void xx() { typename t_alloc::alloc_type atype; // this type is the same as t_item type atype = true; } }; void TestInstantiations() { pfc::array_t myArrayInt; list_impl_t > myListImplInt; (void) myArrayInt; (void) myListImplInt; } %} %template(ListImplFastBool) list_impl_t >; %template(ListFastBool) list_tt; %template(ListImplFastDouble) list_impl_t >; %template(ListDefaultDouble) list_tt;