%module template_typedef_cplx4 %{ #include "template_typedef_cplx2.h" %} %include "template_typedef_cplx2.h" %inline %{ typedef vfncs::ArithUnaryFunction RFunction; // **** these two work **** // typedef vfncs::ArithUnaryFunction CFunction; // typedef vfncs::ArithUnaryFunction, std::complex > CFunction; // **** these ones don't *** // typedef vfncs::ArithUnaryFunction > CFunction; typedef vfncs::ArithUnaryFunction, Complex > CFunction; int my_func_r(RFunction* hello) { return 0; } int my_func_c(CFunction* hello) { return 1; } struct Sin : RFunction { }; struct CSin : CFunction { }; %}