У меня есть высокополиморфная функция c ++, которую можно вызывать с почти 20 различными типами.
Чтобы представить ее на python, я делаю что-то вроде этого:но затем, чтобы вызвать их из python, я должен специализировать функции для каждого поддерживаемого ими типа:
BOOST_PYTHON_MODULE(module_foo)
{
def("foo", foo<orignalFunctionNamespace::type1>);
def("foo", foo<orignalFunctionNamespace::type2>);
def("foo", foo<orignalFunctionNamespace::type3>);
def("foo", foo<orignalFunctionNamespace::type4>);
def("foo", foo<orignalFunctionNamespace::type5>);
def("foo", foo<orignalFunctionNamespace::type6>);
def("foo", foo<orignalFunctionNamespace::type7>);
...
...
...
def("foo", foo<orignalFunctionNamespace::typeN>);
}
Это работает, но я не могу перестать думать, что должен быть более разумный способ сделать это.Так как я должен сделать это для многих функций, все становится очень большим и повторяющимся.Есть предложения?