/* This testcase checks whether SWIG correctly parses function objects and the templates for the functions (signature). Function objects are objects which overload the operator() function. The std::function does not provide any seamless support in the target languages yet. */ %module(directors="1") cpp11_function_objects %rename(__call__) Test::operator(); %feature("director") Test; %inline %{ class Test { public: int value; virtual void operator()(int x, int y) { value=x+y; } Test() : value(0) {} virtual ~Test() {} }; Test test; #include std::function pF = test; int testit1(Test &new_test, int a, int b) { pF = std::ref(new_test); pF(a, b); return new_test.value; } int testit2(int a, int b) { test(a, b); return test.value; } %}