Как открыть следующий класс с помощью Boost.Python?
class C {
public:
static void F(int) {}
static void F(double) {}
};
Я пробовал что-то вроде этого:
bp::class_<C>("C")
.def("F", (void (C::*)(int))&C::F).staticmethod("F")
.def("F", (void (C::*)(double))&C::F).staticmethod("F")
;
Но это вызывает исключение в Python ( SystemError: инициализация libdistributions вызвала незарегистрированное исключение
). Если я удалю одну из перегрузок из bp :: class_
, то все будет нормально. Я знаю, что Boost.Python может автоматически работать с перегруженными конструкторами, поэтому мне было интересно, есть ли что-то подобное для статических методов.
bp::class_<C>("C")
.def("F", (void (C::*)(int))&C::F) // Note missing staticmethod call!
.def("F", (void (C::*)(double))&C::F).staticmethod("F")
;