tomas.r
tomas.r

Reputation: 31

Return_value_policy for method with void return type and optional parameter

I have class with void method and optional argument looking like this:

class A
{
public:
    void method(int par1, bool par2 = false) { ... }
};

BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(method, A::method, 1, 2)
class_<A>("A")
  .def("method", &A::method, return_value_policy<reference_existing_object>(),method())
;

What is correct return_value_policy in this case? I've tried to avoid return policy completely however I've received following compile error then.

'boost::mpl::vector17<RT,most_derived<Target,ClassT>::type&,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14> boost::python::detail::get_signature(RT (__cdecl ClassT::* )(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14) volatile const,Target *)' : expects 2 arguments - 1 provided

Any suggestion appreciated.

Upvotes: 0

Views: 205

Answers (1)

tomas.r
tomas.r

Reputation: 31

I've scrambled few things together. Bur I realized I do not need to use BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS but rather named arguments something like:

def("method", &A::method, (arg("par1"), arg("par2") = false))

Upvotes: 1

Related Questions