2011-12-13 100 views
2
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. 

問題>據我所知,defaultdelete是的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 
+0

它也不支持int eh VS11 Developer Preview。 – 2011-12-13 19:50:15

回答

2

沒有,可悲的是VC2010不會。它甚至不支持自動生成的移動構造函數。

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

+0

請注意,Visual C++ 11 Developer Preview完全支持隱式定義的移動操作(但不支持默認或刪除的特殊成員)。 – 2011-12-13 19:58:56

相關問題