在从GCC 5.4升级为GCC 7.2后,用Eigen 3.3.4警告

Warnings with Eigen 3.3.4 after upgrading from GCC 5.4 to GCC 7.2

本文关键字:GCC Eigen 警告 4升 在从      更新时间:2023-10-16

当我使用GCC 5.4与-Wall -Werror编译代码时,它可以正常工作。当我使用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。任何人都可以亮着吗?

正如Ggael所说,这已经固定了,但还没有官方的TARBALL。从Mercurial存储库克隆(截至目前版本3.3.90),并在我的代码中使用该问题解决了问题。