%module "typename" // Tests the typename handling in templates. %inline %{ class Foo { public: typedef double Number; Number blah() { return 2.1828; } }; class Bar { public: typedef int Number; Number blah() { return 42; } }; template<typename T> typename T::Number twoblah(T &obj) { return 2*(obj.blah()); } Bar::Number spam() { return 3; } %} %template(twoFoo) twoblah<Foo>; %template(twoBar) twoblah<Bar>;