Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从GCC 5.4升级到GCC 7.2后,带有Eigen 3.3.4的警告_C++_Gcc_Eigen_Eigen3 - Fatal编程技术网

C++ 从GCC 5.4升级到GCC 7.2后,带有Eigen 3.3.4的警告

C++ 从GCC 5.4升级到GCC 7.2后,带有Eigen 3.3.4的警告,c++,gcc,eigen,eigen3,C++,Gcc,Eigen,Eigen3,当我使用GCC5.4使用-Wall-Werror编译代码时,它运行良好。当我使用GCC 7.2(作为本机编译器从源代码构建)进行尝试时,它给出了以下内容: error: enum constant in boolean context [-Werror=int-in-bool-context] MayLinearVectorize = bool(MightVectorize) && MayLinearize && DstHasDirectAccess 再现问题

当我使用GCC5.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;
}
#包括
使用名称空间特征;
int main()
{
矩阵v=矩阵::常数(5,1);
返回0;
}
使用
g++7 eigtrival.cpp-I$EIGEN_DIR-Wall-Werror编译


如果我在没有
-Werror
的情况下尝试,我会收到警告,但它会编译,并且我的所有(少数)测试都通过了-据我所知,这很好。但是,我希望保持所有警告和
-Werror
处于启用状态。有人能解释一下吗?

正如盖尔所说,这个问题已经解决了,但还没有正式公布。从Mercurial存储库(目前版本为3.3.90)克隆并在我的代码中使用该版本修复了该问题。

警告出现在Eigen中,不是吗?你应该向bugzilla报告这个问题。。。解决方法:使用
#pragma GCC diagnostic ignored
这在3.3和devel分支中早已修复,但我昨天刚从下载页面下载了一份新副本。更新:这在3.3.5及更高版本中已修复。