class NonCopyable
{
public:
NonCopyable() = default;
NonCopyable(const NonCopyable&) = delete;
NonCopyable& operator=(const NonCopyable&) = delete;
};
我已经使用VS2010尝试了上面的代码,它没有通过编译。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.
问题>据我所知,default
和delete
是的C++ 0x的新特性。 VS2010是否支持这些新标准?
//更新 - 它支持用gcc版本4.5.2 //
// gcc版本4.5.2(Ubuntu的/ Linaro的4.5.2-8ubuntu4)
$ ~/Documents/C++ $ g++ -o t2 t2.cpp -std=c++0x
它也不支持int eh VS11 Developer Preview。 – 2011-12-13 19:50:15