%module template_tbase_template %warnfilter(SWIGWARN_RUBY_WRONG_NAME) traits; /* Ruby, wrong class name */ %warnfilter(SWIGWARN_PARSE_EXPLICIT_TEMPLATE); %inline %{ typedef double Double; template struct Funktion { char *test() { return (char *) "test"; } }; template struct traits { typedef ArgType arg_type; typedef ResType res_type; typedef Funktion base; }; // Egad! template struct Class_ : Funktion::arg_type, typename traits::res_type> { }; template typename traits::base make_Class() { return Class_(); } %} %{ template struct Funktion ; template struct Class_ ; %} %template(traits_dd) traits ; %template(Funktion_dd) Funktion ; %template(Class_dd) Class_ ; %template(make_Class_dd) make_Class;