问题描述
pair<bool,size_t>模板声明了,但是接口调用会报错cannot unpack non-iterable SwigPyObject object



报错:cannot unpack non-iterable SwigPyObject object
解决思路
size_t 可能在不同的命名空间中有不同的定义,尝试模板实例化修改为
%template(BoolSizeTPair) std::pair<bool, std::size_t>; 编译报错:
swig.i:221: Warning 490: Fragment 'SWIG_AsVal_std_size_t' not found.
swig.i:221: Warning 490: Fragment 'SWIG_From_std_size_t' not found. 参考链接 1:Missing definition for std::size_t when targeting Python? · Issue #1712 · swig/swig

参考链接 2:如何正确包装 std::vectorstd::size_t 与 Python 的 SWIG? std::size_t 的问题_python_Mangs-Python
解决方案
尝试如下所示为 swig 定义 size_t - http://www.swig.org/Doc1.3/SWIG.html#SWIG_nn20
swig
%inline %{
typedef long unsigned int size_t;
%}
namespace std {
%template(VecSize) vector<size_t>;
}