Вопрос
Есть ли способ создать оболочку Python для Cython-wrapped С++ класса с шаблонами? (т.е. делать то, что здесь показано, но с шаблонами: http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html#create-cython-wrapper-class).
Я знаю об обходном пути с плавлеными типами (https://groups.google.com/forum/#!topic/cython-users/qQpMo3hGQqI), но это не позволяет вам устанавливать классы типа vector<vector<int>>
: у плавких типов есть, довольно неудивительно, нет понятия рекурсии.
перефразируя
То, что я хотел бы достичь, - это обернутый класс, например:
cdef extern from "header.h":
cdef cppclass Foo[T]:
Foo(T param)
# ...
создать простую оболочку Python:
cdef class PyFoo[T]: # I know the '[T]' can't be here, it a wish
cdef Foo[T] *thisptr
def __cinit__(self, param):
self.thisptr = new Foo[T](param)
# ...
Я совершенно уверен, что Cython не поддерживает само по себе, но, возможно, кто-то может подумать об обходном пути. Я не ищу идиоматических или приятных примеров, мне просто интересно, возможно ли это в любом случае.