%module template_empty_inherit %rename(FunctorOperator) operator(); %inline %{ template<class Arg, typename Result> struct Functor { virtual Result operator()(Arg x) const = 0; virtual ~Functor() {} }; %} // Bug fix - %ignore was resulting in this warning: // Warning 401: Base class 'Functor< int,int >' has no name as it is an empty template instantiated with '%template()'. Ignored. %ignore Functor<int, int>; %template() Functor<int, int>; %inline %{ #include <algorithm> #include <iterator> struct SquareFunctor : Functor<int, int> { int operator()(int v) const { return v*v; } }; %} %include <std_vector.i> %template(VectorInt) std::vector<int>; %inline %{ std::vector<int> squares(const std::vector<int>& vi) { std::vector<int> result; std::transform(vi.begin(), vi.end(), std::back_inserter(result), SquareFunctor()); return result; } %}
Generated by dwww version 1.15 on Tue Jul 2 00:15:36 CEST 2024.