Swig Python模板具有类型扣除功能
swig python template functions with type deduction
我想在C 代码后包装到Python模块中。
class minimal
{
public:
minimal()
{
}
~minimal()
{
}
template<class T>
void foo(T a)
{
auto z = a;
}
};
您可以看到,我具有模板函数,而且我知道我无法在Python中调用模板函数,但是我希望使用INT或字符串参数调用FOO会因为类型的扣除而获得成功。.cxx文件中仍然没有FOO,但是SWIG文档说,它支持类型扣除
所以我的目标是像这样的python代码:
#C++ analog: minimal.foo(123)
minimal().foo(123)
#C++: to minimal().foo(0.1)
minimal().foo(0.1)
有可能吗?还是我的想法完全错了?
使用%template
指令指示SWIG创建特定模板的实现。只有声明的模板实例可用。
示例:
%module test
%inline %{
class minimal
{
public:
minimal()
{
}
~minimal()
{
}
template<class T>
void foo(T a)
{
auto z = a;
}
};
%}
%template(foo) minimal::foo<int>;
%template(foo) minimal::foo<double>;
示例:
>>> import test
>>> m=test.minimal()
>>> m.foo(1)
>>> m.foo(1.5)
>>> m.foo('abc')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:test.py", line 115, in foo
return _test.minimal_foo(self, *args)
NotImplementedError: Wrong number or type of arguments for overloaded function 'minimal_foo'.
Possible C/C++ prototypes are:
minimal::foo< int >(int)
minimal::foo< double >(double)
相关文章:
- 错误:在尝试检测 std::cout 是否<< t 时,功能强制转换为数组类型;有效
- 对于非常量指针类型的参数,未调用具有常量指针模板类型参数的功能
- C++从成员类型中扣除类型的功能模板?
- 这种错误的原因是什么:将"功能"重新定义为不同类型的符号
- 模板功能:根据类型名称进行转换
- 如何在同一个模板功能上专门化几种类型?
- 错误:未知类型名称"功能跟踪"
- 我对C 中共享指针列表进行排序的功能未完成类型
- 共享_ptr中多功能数组的类型是什么
- 确定功能主体中的返回类型
- 返回类型不可知模板类成员功能
- 类型推论模板功能返回类型
- C 功能模板指定第二个模板参数类型
- 为什么指定数据类型而不是构造功能参数?C
- C 尝试使用模板输出功能来显示不同类型的数据
- 为什么BOOST :: HANA :: EXAREMIS ::键入实验功能?类型列表的棘手是什么
- 将多种类型传递给STD ::功能C
- C 中此功能的返回类型的含义
- C++ 使用包含不同类型功能对象的基和派生类的 Reactor
- 请求从非标量类型转换为非标量类型(功能)