У меня есть функция шаблона со следующей сигнатурой в файле c++
template <class T> std::vector<T> function(T);
Я хочу сделать файл интерфейса для переноса main.cpp в файл python с помощью Swig. Как включить Tfunction в Swig, для типов int float и double?
//main.i
%module main
%include "carrays.i"
%array_class(double, doubleArray);
%{
extern template <class T> std::vector<T> Tfunction(T);
%}
extern template <class T> std::vector<T> Tfunction(T);
Поскольку Python не знает шаблонов, вам нужно создать тип для каждого параметра. Существует удобная директива шаблона%, которую вы бы использовали:
%template(TfunctionInt) Tfunction<int>;
Это подробно объясняется в разделе 6.18 документов SWIG.