Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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++ Visual Studio 2017发布版本中的特征cwisemin/cwisemax访问冲突_C++_Visual Studio_Eigen_Visual Studio 2017 - Fatal编程技术网

C++ Visual Studio 2017发布版本中的特征cwisemin/cwisemax访问冲突

C++ Visual Studio 2017发布版本中的特征cwisemin/cwisemax访问冲突,c++,visual-studio,eigen,visual-studio-2017,C++,Visual Studio,Eigen,Visual Studio 2017,以下是一些示例代码,在使用Visual Studio 2017的x86发行版时会导致访问冲突: #include <Eigen\Core> #include <iostream> int main() { Eigen::Vector3i a(1,1,1); Eigen::Vector3i b(10, 10, 10); std::cout << a.cwiseMin(b) << std::endl; retur

以下是一些示例代码,在使用Visual Studio 2017的x86发行版时会导致访问冲突:

#include <Eigen\Core>
#include <iostream>

int main()
{

    Eigen::Vector3i a(1,1,1);
    Eigen::Vector3i b(10, 10, 10);

    std::cout << a.cwiseMin(b) << std::endl;

    return 0;
}
#包括
#包括
int main()
{
本征::向量3a(1,1,1);
本征::向量3ib(10,10,10);

std::cout我看到了相同的结果,除了vs2015 x86发布版本也为第一个值提供了错误的结果。我提出的两个选项是:

  • 关闭优化。属性->C/C++->优化
  • a.cwiseMin(b)
    的结果存储在第三个变量中:

    向量3ic(a.cwiseMin(b));
    std::cout我遇到了同样的问题,并且可以用您的示例代码重现该问题。在我的例子中,通过指定
    EIGEN\u DONT\u VECTORIZE
    预处理器定义禁用向量化后,该问题消失了。如果要保持向量化启用,您可能需要检查内存对齐(因为矢量化在启用时具有更强的对齐要求).

    感谢您的反馈!关闭优化确实有效,但遗憾的是不太可行,因为它会使更繁重的计算变得太慢。虽然您的建议似乎适用于该示例,但如果您将常量值替换为变量
    Eigen::Vector3i a(i,i,i),则会失败
    …如果我用变量替换常量,只要变量被初始化,我就看不出有什么问题。
    int I=1;Eigen::Vector3i a(I,I,I);