Re: [C++-sig] function with >15 args yields get_signature error
by Troy D. Straszheim other posts by this author
Oct 26 2009 10:12AM messages near this date
Re: [C++-sig] function with >15 args yields get_signature error
|
[C++-sig] How to call reshape((M,N),order='F') ?
Eilif Mueller wrote:
> Hi,
>
> Wrapping a function f with 16 arguments:
>
> int f(int x1, int x2, int x3, int x4, int x5,
> int x6, int x7, int x8, int x9, int x10,
> int x11, int x12, int x13, int x14, int x15,
> int x16) {
>
> return x1;
>
> }
>
> BOOST_PYTHON_MODULE(test)
> {
>
> def("f",f);
>
> }
>
>
> yields
>
> /usr/include/boost/python/make_function.hpp: In function âboost::python::api::object boo
st::python::make_function(F) [with F = int (*)(int, int, int, int, int, int, int, int, int,
int, int, int, int, int, int, int)]â:
> /usr/include/boost/python/def.hpp:82: instantiated from âboost::python::api::object bo
ost::python::detail::make_function1(T, ...) [with T = int (*)(int, int, int, int, int, int,
int, int, int, int, int, int, int, int, int, int)]â
> /usr/include/boost/python/def.hpp:91: instantiated from âvoid boost::python::def(const
char*, Fn) [with Fn = int (*)(int, int, int, int, int, int, int, int, int, int, int, int, i
nt, int, int, int)]â
> test_module.cpp:20: instantiated from here
> /usr/include/boost/python/make_function.hpp:104: error: no matching function for call to â
get_signature(int (*&)(int, int, int, int, int, int, int, int, int, int, int, int, int, in
t, int, int))â
> make: *** [stream.o] Error 1
>
>
> whereas all is fine if that last arg "int x16" is removed. All of gcc-4.2, gcc-4.3 and gc
c-4.4 seem to exhibit the same behaviour. Same effect for libboost-python1.38-dev on Ubuntu
karmic and libboost-python1.35-dev on Ubuntu jaunty.
>
> I need that 16th arg and more ... about 32 args, I think.
>
> Thanks for any help you can offer.
>
This came up recently. You're going to have various problems (not all
boost.python problems) getting arity that large. The workaround is to
introduce an intermediate function that takes a boost::python::tuple
and forward to the zillion-arguments one, example here:
http://gitorious.org/~straszheim/boost/straszheim/blobs/python/libs/python/test/zillion_argu
ments_workaround.cpp
-t
_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@[...].org
http://mail.python.org/mailman/listinfo/cplusplus-sig
Thread:
Eilif Mueller
William Ladwig
Eilif Mueller
Matthew Scouten
Troy D. Straszheim
Renato Araujo
Troy D. Straszheim
|