Boost.Python无效关键字参数崩溃了解释器

时间:2013-04-02 18:41:16

标签: boost-python

我正在尝试使用多个构造函数方法定义一个类,其中一些方法采用关键字参数。一切都按预期/预期工作,直到构造函数传递一个错误的参数列表,在这种情况下解释器死亡而不是抛出异常。这是一个最小的例子:

#include <boost/python.hpp>
#include <string>

class Crash {
  public:
    Crash(std::string) { }
    Crash(int, int) { }
};

BOOST_PYTHON_MODULE(mymodule) {
    using namespace boost::python;

    class_<Crash>("Crash", init<std::string>())
        .def(init<int, int>((arg("i") = 3)))
    ;
}

输出:

Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win 32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mymodule as mm
>>> mm.Crash("asdf")
<mymodule.Crash object at 0x00D9FB70>
>>> mm.Crash(3)
<mymodule.Crash object at 0x00D9FE10>
>>> mm.Crash(4, i=5)
<mymodule.Crash object at 0x00D9FB70>
>>> mm.Crash(i=3) # kills the interpreter

使用无效关键字(例如Crash(blah=4))也会导致解释程序失效。

这是一个Boost.Python错误,还是我做错了什么?

我正在使用Boost 1.51 / Python 2.7.3 / MSVC 9.0。

0 个答案:

没有答案