From: William S F. <ws...@fu...> - 2008-12-04 22:32:35
|
Patrick M. wrote: > >> You're not instantiating the template function. Put >> %template(intfriendfun) friendfun<int>; >> toward the end of your interface file. >> >> Josh > > You're absolutely right. This solved the problems. (I thought I tried this > earlier and had even more error messages, but apparently I didn't.) > > Can someone still comment on my observation (see first post in this thread), > that the posted code only works with swig 1.3.31: >> (This was done with swig 1.3.31. With version 1.3.33 there are more > problems causing an error until I >> remove the "<X>" in the line "friend void friendfun <X> (X arg);" of the > class Test declaration. Is there >> an explanation for this error? Looks like a regression bug.) > Or can anybody run the latest version of swig on my example without getting > a syntax error? The latest does not give a syntax error, but it does give a warning: example.i:18: Warning(503): Can't wrap 'friendfun<(X)>' unless renamed to a valid identifier. which strikes me as unwarranted. I suggest you filter the warning as below. Can you add this testcase into the bug tracker? %warnfilter(503) friendfun; %{ template<class X> void friendfun (X arg){}; %} %inline %{ template<class X> class Test{ int counter; public: Test(int init){ counter=init; }; friend void friendfun <X> (X arg); }; %} %template(TestInt) Test<int>; William |