Проблема
У меня есть шаблонный класс в С++, который имеет статический метод. Это выглядит примерно так:
template<typename T>
class Foo {
static std::shared_ptr<Foo<T>> doSth();
}
поэтому в С++ вы бы назвали его следующим: Foo<Int>::doSth();
. Однако в Cython способ вызова статических методов заключается в использовании имени класса как пространства имен:
cdef extern from "Bar.h" namespace "Bar":
shared_ptr[Bar] doSth() # assuming shared_ptr is already declared
но это не имеет понятия шаблонов. Очевидно, что просто передача Foo<T>
в качестве пространства имен не работает, потому что она переводится в Foo<T>::doStr()
в С++, для T не заменяется конкретный тип.
Вопрос
Как бы вы это делали в Китоне? Есть ли способ или обходной путь?