从GCC 5.4升级到GCC 7.2后,使用特征3.3.4的警告

时间:2017-11-25 05:49:39

标签: c++ gcc eigen eigen3

当我用-Wall -Werror使用GCC 5.4编译我的代码时,它运行正常。当我尝试使用GCC 7.2(从源代码构建为本机编译器)时,它给出了:

error: enum constant in boolean context [-Werror=int-in-bool-context]
 MayLinearVectorize = bool(MightVectorize) && MayLinearize && DstHasDirectAccess

重现问题的一个小例子:

#include <Eigen/Dense>

using namespace Eigen;

int main()
{
    Matrix<double,Dynamic,1> v = Matrix<double,Dynamic,1>::Constant(5, 1);
    return 0;
}

使用g++7 eigtrivial.cpp -I$EIGEN_DIR -Wall -Werror编译。

如果我在没有-Werror的情况下尝试,我会收到警告,但它会编译,并且我的所有(少数)测试都会通过 - 据我所知,它很好。但是,我想保留所有警告并启用-Werror。任何人都可以对此有所了解吗?

1 个答案:

答案 0 :(得分:2)

正如ggael所说,这已经修复但尚未成为正式的tarball。从Mercurial存储库(截至目前版本3.3.90)克隆并在我的代码中使用它修复了该问题。