10 template <class ArgType, class ResType>
13 char *test() { return (char *) "test"; }
16 template <class AF, class RF>
17 struct ArithFunction : Function_<AF, RF>
21 template <class ArgType, class ResType>
26 template <class ArgType>
27 struct traits<ArgType, double>
29 typedef ArgType arg_type;
30 typedef double res_type;
31 typedef ArithFunction<ArgType, double> base;
34 template <class ArgType>
35 struct traits<ArgType, Double>
37 typedef ArgType arg_type;
38 typedef Double res_type;
39 typedef ArithFunction<ArgType, Double> base;
42 template <class AF, class RF>
43 class Class_ : public ArithFunction< typename traits<AF, RF>::arg_type,
44 typename traits<AF, RF>::res_type >
48 template <class AF, class RF>
49 typename traits<AF, RF>::base
52 return Class_<AF, RF>();
61 template struct Function_ <Double, Double>;
62 template struct ArithFunction <Double, Double>;
63 template class Class_ <Double, Double>;
69 // This complains only when using a namespace
71 %template() traits<Double,Double>;
72 %template(Function_DD) Function_ <Double, Double>;
73 %template(ArithFunction_DD) ArithFunction <Double, Double>;
74 %template(Class_DD) Class_ <Double, Double>;
75 %template(make_Class_DD) make_Class <Double, Double>;