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