我正在尝试为复杂项目创建一个python模块,该模块使用C ++ 11中的一些新功能(https://code.google.com/p/cpp-array/)。我的界面文件非常简单:
%module array
%{
#include "array-config.hpp"
#include "array.hpp"
%}
%include "array-config.hpp"
%include "array.hpp"
然而,当我跑步时,我会遇到很多错误。
第一个错误是constexpr
constexpr static int dim()
{ return d; }
因此,如果我删除constexpr,我可以解决这个错误。根据{{3}}中的文档,此关键字已得到处理。
第二个是找到此功能时:
template <int d, typename U, typename... Args>
typename std::enable_if<std::is_integral<U>::value and !std::is_pointer<U>::value and d < k, void>::type
init(U i, Args&&... args) {
assert(i != 0); // Array dimension cannot be zero
n_[d] = i;
init<d+1>(args...);
}
我只是试图使用swig“为真正的懒惰”,但我开始怀疑在这一点上是否甚至可能。我是否必须复制整个头文件并开始进行调整才能使其工作?我真的很感激一些建议,因为我是新手。
答案 0 :(得分:0)
您始终可以在#ifdef
例如,我正在使用我们使用的SWIG版本不支持的C ++ 11块。所以我这样做:
namespace glue {
class GlueServer {
public:
virtual void handle(std::string path, GlueHandlerFunc handler, void* arg) = 0;
#ifndef SWIG
virtual void handleBlock(std::string path, void (^b)(GlueRequest* req)) = 0;
#endif
// ...