Python 包装一个c++;使用swig的模板类

Python 包装一个c++;使用swig的模板类,python,c++,templates,swig,Python,C++,Templates,Swig,我有一个类结构,它使用了很多我想使用的模板。 我知道在堆栈溢出(,)方面有几个类似的问题,但没有一个适用于我的案例 下面是一个简单的示例 疯狂模板.h #pragma once class CustomAttrs{ public: enum dattr1d{pos,vel,someCustomCaseVar, d1dLast}; }; template <class T> class A { public: T attributes; }; templat

我有一个类结构,它使用了很多我想使用的模板。 我知道在堆栈溢出(,)方面有几个类似的问题,但没有一个适用于我的案例

下面是一个简单的示例

疯狂模板.h

#pragma once

class CustomAttrs{
public:
    enum dattr1d{pos,vel,someCustomCaseVar, d1dLast};
};


template <class T> 
class A
{
public:
    T attributes;
};


template <template<class> class A, class T> 
class B : public A<T>
{

};


template<template<template<class> class, class> class Op, template<class> class X, class T>
class C : public Op<X,T>
{
};

template class A<CustomAttrs>;
template class B<A, CustomAttrs>;
template class C<B, A, CustomAttrs>;
#pragma一次
类CustomAttrs{
公众:
枚举dattr1d{pos,vel,someCustomCaseVar,d1dLast};
};
模板
甲级
{
公众:
T属性;
};
模板
B类:公共A
{
};
模板
丙级:公共Op
{
};
甲级模板;
模板B类;
模板C类;
我的疯狂模板。我的相当简单:

%module insane

%{
#include "./insane_template.h"
%}

%include "./insane_template.h"

%template(AC) A<CustomAttrs>;
%template(BAC) B<A, CustomAttrs>;
%template(CBAC) C<B, A, CustomAttrs>;
%模块疯狂
%{
#包括“/insane_template.h”
%}
%包括“/insane_template.h”
%模板(AC)A;
%模板(BAC)B;
%模板(CBAC)C;
当我尝试通过
swig-v-c++-python-outdir./nsane_template.I来swig它时,我得到了错误
error:input(1)中的语法错误。

如果我注释掉类
C
,它将按预期工作。不幸的是,它是最需要包装的类之一

所以我的问题是:是否(以及如何)可以像
template

解析器不能解析这样的模板构造,这是对的吗

我只要刷一下C级的
就可以了

非常感谢

更新
我在Ubuntu14.04和gcc/g++4.8.4上使用了swig 3.0.5,这很可能是swig不支持的,特别是因为你提供的链接中报告了一个未关闭的错误。是的,我想是这样的,使用swig 3.0.5时,即使报告的错误对我来说也不是问题。您可以做的是实例化模板并创建适当的二进制接口-这样您就不需要包装模板。另一个好处是,您可以创建二进制兼容的发布和调试版本。