今天我遇到了msvc2013编译器的一个非常奇怪的行为.差不多一个小时后,我发现了导致错误的原因.最小的例子:
#include <iostream>
#include <vector>
int main(int argc, char *argv[])
{
float f1, f2;
std::swap<float>(f1, f2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当包含std :: vector时,我在msvc2013中遇到了一堆非常奇怪的编译器错误!使用mingw编译代码时,代码编译正常,就像我期望的那样.
错误:
main.cpp
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocale(341): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\vector(1892): error C2825: '_Alloc': must be a class or namespace when followed by '::'
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\vector(1944): note: see reference to class template instantiation 'std::_Vb_iter_base<_Alloc>' being compiled
with …Run Code Online (Sandbox Code Playgroud)