Hi Daniel,
engineer's finest remark:

"That is an *interesting* problem"

The problem here is that the arguments don't really allow for deduction with 
"make" you
meant, so:

I'd quickly work around that using a lambda function; try something like

      .def(py::init(
        [](int dual_basis, int interleave) {
            return decode_rs::make(dual_basis, int interleave);
        }),
           py::arg("dual_basis"),
           py::arg("interleave"),
           D(decode_rs,make)
        );

On 22.01.21 19:09, Daniel Estévez wrote:
> Hi,
> 
> I'm porting gr-satellites to GNU Radio 3.9. I have some blocks that have an 
> overloaded
> make() method, for example:
> 
> https://github.com/daniestevez/gr-satellites/blob/master/include/satellites/decode_rs.h
> 
> Maybe this wasn't a very wise design decision on my side.
> 
> Now I'm wondering if it's possible to use this with pybind11, and if so how 
> to do it.
> 
> gr_modtool bind (with pygccxml installed) is generating this:
> 
> https://gist.github.com/daniestevez/a3d0aaf7e6b2a68933ebb30e9043e7ac
> 
> which gives build problems like
> 
> /home/daniel/gr-satellites/python/bindings/decode_rs_python.cc: In function 
> 'void
> bind_decode_rs(pybind11::module&)':
> /home/daniel/gr-satellites/python/bindings/decode_rs_python.cc:39:39: error: 
> no matching
> function for call to 'init(<unresolved overloaded function type>)'
>    39 |         .def(py::init(&decode_rs::make),
>       |                                       ^
> 
> 
> Best,
> 
> Daniel.
> 

Reply via email to