1 %module member_template 2 3 %{ 4 #ifdef max 5 #undef max 6 #endif 7 %} 8 9 10 11 %inline %{ max(T x,T y,T z)12template<class T> T max(T x, T y, T z) { return (x > y) ? x : y; } 13 14 template<class T> class Foo { 15 public: max(S x,S y)16 template<class S> S max(S x, S y) { return (x > y) ? x : y; } 17 }; 18 19 %} 20 21 %extend Foo { 22 %template(maxi) max<int>; 23 %template(maxd) max<double>; 24 }; 25 26 %template(Fooint) Foo<int>; 27 %template(Foodouble) Foo<double>; 28 29