VS2010是否支持“控制编译器生成的功能”?

时间:2011-12-13 19:45:58

标签: c++ visual-studio-2010

class NonCopyable
{
public:
    NonCopyable() = default;
    NonCopyable(const NonCopyable&) = delete;
    NonCopyable& operator=(const NonCopyable&) = delete;
};

我在VS2010上尝试了上面的代码,并没有通过编译。

1>c:\temp\app1\app1\app1.cpp(12): error C2065: 'default' : undeclared identifier
1>c:\temp\app1\app1\app1.cpp(12): error C2253: 'NonCopyable' : pure specifier or abstract override specifier only allowed on virtual function
1>c:\temp\app1\app1\app1.cpp(13): error C2059: syntax error : ';'
1>c:\temp\app1\app1\app1.cpp(13): error C2238: unexpected token(s) preceding ';'
1>c:\temp\app1\app1\app1.cpp(14): error C2059: syntax error : ';'
1>c:\temp\app1\app1\app1.cpp(14): error C2238: unexpected token(s) preceding ';'
1>
1>Build FAILED.

问题>据我所知,defaultdelete是C ++ 0x的新功能。 VS2010是否支持这些新标准?

//已更新 - gcc版本4.5.2 //

支持

// gcc version 4.5.2(Ubuntu / Linaro 4.5.2-8ubuntu4)

$ ~/Documents/C++ $ g++ -o t2 t2.cpp -std=c++0x

1 个答案:

答案 0 :(得分:2)

不,遗憾的是VC2010没有。它甚至不支持自动生成的移动构造函数。

Here is a list of C++11 features VC2010 supports.请注意,其中一些只是部分支持。