当我用-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
。任何人都可以对此有所了解吗?
答案 0 :(得分:2)
正如ggael所说,这已经修复但尚未成为正式的tarball。从Mercurial存储库(截至目前版本3.3.90)克隆并在我的代码中使用它修复了该问题。