Swig:ValueWrapper和模板BUG?

问题描述 投票:1回答:1

我尝试将一个SmartPointer-Template-Type包含在一个inWayper中,用于in typemap。我找不到解决方案。所以我检查了swig源代码并意识到SwigType_alttype中的typsys.c正在为所有模板设置use_wrapper为true。由于use_wrapper = !n || !GetFlag(n, "feature:novaluewrapper");true总是!n。这是故意还是错误?

n = Swig_symbol_clookup(td, 0);
      if (n) {
    if (GetFlag(n, "feature:valuewrapper")) {
      use_wrapper = 1;
    } else {
      if (Checkattr(n, "nodeType", "class")
          && (!Getattr(n, "allocate:default_constructor")
          || (Getattr(n, "allocate:noassign")))) {
        use_wrapper = !GetFlag(n, "feature:novaluewrapper") || GetFlag(n, "feature:nodefault");
      }
    }
      } else {
    if (SwigType_issimple(td) && SwigType_istemplate(td)) {
      use_wrapper = !n || !GetFlag(n, "feature:novaluewrapper");
    }
      }
c++ swig
1个回答
0
投票

我不能回答为什么他们这样做,但我找到了https://web.archive.org/web/20171227205037/http://swig-user.narkive.com/f3gshV1S/swigvaluewrapper-being-used-for-unknown-templates的工作。

从上一篇文章:

我找到了一个简洁的解决方案,使用%template指令解决这个问题,没有名字,

%template()std :: auto_ptr;

我自己使用它,虽然很烦人,你必须为每种类型声明它不是太糟糕。

© www.soinside.com 2019 - 2024. All rights reserved.