gcc使用sine和boost编译错误:interval

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gcc使用sine和boost编译错误:interval相关的知识,希望对你有一定的参考价值。

我需要在安装了gcc / g ++(7.2.0)和boost(1.66)的linux(CentOs 6.7)服务器上运行一些代码(编辑:不仅仅是1.66,一个较旧版本的boost干扰。让你的机器保持清洁)。我用这样的策略指定了我的间隔类型:

// test.cpp
#include <boost/numeric/interval.hpp>   

namespace bn = boost::numeric;
namespace bi = bn::interval_lib;

using Interval = bn::interval<
      double,
      bi::policies<
          bi::save_state<bi::rounded_transc_std<double> >,
          bi::checking_base<double>
      >
  >;

现在我想做一些简单的计算,如:

// still test.cpp
int main() 
{
    Interval iv_arg {1.0};
    Interval res = sin(iv_arg);
}

在我的本地机器上,一个用clang编译的mac工作得很好。但是,只要我尝试在服务器上运行它,使用g++ -std=c++11 test.cpp进行编译我就会收到错误:

/usr/include/boost/numeric/interval/rounded_arith.hpp:71:59:错误:'to_int'未在此范围内声明,并且在实例化时,参数依赖查找未找到任何声明[-fpermissive] T int_down(const T&x){this-> downward(); return to_int(x); } ~~~~~~ ^ ~~ / usr /include/boost/numeric/interval/rounded_arith.hpp:71:59:注意:依赖基类'boost :: numeric :: interval_lib :: detail :: c99_rounding'中的声明找不到非限定查询/usr/include/boost/numeric/interval/rounded_arith.hpp:71:59:注意:使用'this-> to_int'代替

还有一些信息似乎与主题无关,但如果可能有帮助,我可以加入它。我尝试谷歌一点但找不到任何相关的东西。如果可能的话,我想找到一个不需要在服务器上进行任何更改的解决方案。有没有人有想法或遇到过类似的问题?

答案

编译它的第一个版本是1.58

以上是关于gcc使用sine和boost编译错误:interval的主要内容,如果未能解决你的问题,请参考以下文章

Boost Spirit v2 gcc 编译错误,使用 msvc 未显示

boost::integer_mask gcc 编译器错误

如何使用旧 ABI 编译 GCC 5 的 boost?

win xp下用gcc编译boost

在其他容器中使用 boost::container::static_vector 时,gcc 编译错误“将‘const s’绑定到‘s&’类型的引用丢弃限定符”

使用 gcc 3.3 mips32 提升 1_49_0 错误