Вы можете связать только сгенерированный класс.Однако можно написать шаблонную функцию для экспорта вашего класса и вызывать эту функцию для каждого конкретного типа, который вы хотите экспортировать.Например:
template<class T>
struct foo {};
template<class T>
void export_foo(std::string name) {
boost::python::class_<foo<T>>(name.c_str());
}
BOOST_PYTHON_MODULE(foo)
{
export_foo<int>("foo_int");
export_foo<std::string>("foo_string");
//...
}
Если этого недостаточно, вы также можете погрузиться в метапрограммирование (например, с Boost.MPL), создать списки типов и автоматически вызвать export_foo для всех этих типов.