小编dum*_*son的帖子

使用带模板参数的swap与std :: vector include冲突

今天我遇到了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)

c++ swap compiler-errors visual-c++

1
推荐指数
1
解决办法
457
查看次数

标签 统计

c++ ×1

compiler-errors ×1

swap ×1

visual-c++ ×1