我使用Boost-Python进行C ++绑定,包括函数foo
:
#include <boost/python.hpp>
namespace bp = boost::python;
foo(bp::dict x, bp::object y);
其中bp :: dict和bp :: object类型处理传入的Python类型s.t.它们可以传递给底层的C ++代码 - more details here。
现在我想用可选参数定义foo
。关注this answer to "How to use boost::optional",我有,
// declaration in foo.hpp
void foo(bp::dict x, bp::optional<bp::object> y = boost::none);
// implementation in foo.cpp
void foo(bp::dict x, bp::optional<bp::object> y) { // do stuff }
我有几个问题:
if (y) { // do stuff with y }
无法将boost :: optional类型转换为bool,并且if (y.get()) { // do stuff with y }
无法使用b / c没有get
方法。