Как решить математическую операцию аргументов шаблонов в SWIG? - PullRequest
0 голосов
/ 26 мая 2019

Я хочу преобразовать код C ++ в код Java в SWIG.В некоторых шаблонах C ++ есть некоторые математические операции с параметрами шаблонов.Например:

template<size_t nbits, size_t es>
  value<1 + 2 * (nbits - es)> fma(const posit<nbits, es>& a, const posit<nbits, es>& b, const posit<nbits, es>& c);

Параметры, nbits и es, используются для вычисления параметров значения класса шаблона <...>.Когда я хочу использовать% template (...) для создания экземпляра функции шаблона, fma, например:

%template(fma_32_2) sw::unum::fma<32,2>;

Однако, это не удается и отображается:

error: 'nbits' was not declared in this scope
   SwigValueWrapper< sw::unum::value< 1+2*(nbits-es) > > result;
                                           ^~~~~
error: 'es' was not declared in this scope
   SwigValueWrapper< sw::unum::value< 1+2*(nbits-es) > > result;
                                                 ^~
error: template argument 1 is invalid
   SwigValueWrapper< sw::unum::value< 1+2*(nbits-es) > > result;
                                                     ^
error: template argument 1 is invalid
   SwigValueWrapper< sw::unum::value< 1+2*(nbits-es) > > result;

Итак, есть ли способы исправить это?

...