来自SWIG文档:
但是现在,%template指令只接受一个参数 替换变量模板参数。
但是,是否可以使用带有零参数的variadic模板和SWIG进行解决方法,如
struct S {
template <typename T, typename... Args>
std::shared_ptr<T> fn(Args&&... args) const;
};
%template(Si) S::fn<int>; /* <-- Error: Template 'fn' undefined. */
答案 0 :(得分:0)
正如评论中所建议我自己回答。我使用这种类型的包装器来生成带有任意数量参数的可变参数模板。
%extend S {
std::shared_ptr<int> fn_int() const { return $self->fn<int>(); }
std::shared_ptr<double> fn_double(int i, int j) const { return $self->fn<double>(i, j); }
}