我跟踪了一个使用 __m128(SSE 向量)作为 std::unordered_map 中的值的错误。这会导致 mingw32 g++4.7.2 出现运行时分段错误。
请看下面的例子。有什么理由会失败吗?或者,是否有解决方法?(我尝试将值包装在一个类中,但没有帮助。)谢谢。
#include <unordered_map>
#include <xmmintrin.h> // __m128
#include <iostream>
int main()
{
std::unordered_map<int,__m128> m;
std::cerr << "still ok\n";
m[0] = __m128();
std::cerr << "crash in previous statement\n";
return 0;
}
编译设置:g++ -march=native -std=c++11