%module template_ns4 %inline %{ namespace hello { class Double { }; template <class ArgType, class ResType> struct Function_ { char *test() { return (char *) "test"; } }; template <class AF, class RF> struct ArithFunction : Function_<AF, RF> { }; template <class ArgType, class ResType> struct traits { }; template <class ArgType> struct traits<ArgType, double> { typedef ArgType arg_type; typedef double res_type; typedef ArithFunction<ArgType, double> base; }; template <class ArgType> struct traits<ArgType, Double> { typedef ArgType arg_type; typedef Double res_type; typedef ArithFunction<ArgType, Double> base; }; template <class AF, class RF> class Class_ : public ArithFunction< typename traits<AF, RF>::arg_type, typename traits<AF, RF>::res_type > { }; template <class AF, class RF> typename traits<AF, RF>::base make_Class() { return Class_<AF, RF>(); } } %} %{ namespace hello { template struct Function_ <Double, Double>; template struct ArithFunction <Double, Double>; template class Class_ <Double, Double>; } %} namespace hello { // // This complains only when using a namespace // %template() traits<Double,Double>; %template(Function_DD) Function_ <Double, Double>; %template(ArithFunction_DD) ArithFunction <Double, Double>; %template(Class_DD) Class_ <Double, Double>; %template(make_Class_DD) make_Class <Double, Double>; }
Generated by dwww version 1.15 on Tue Jul 2 00:39:34 CEST 2024.