在VS 2010 SP1,執行以下操作:「刪除」 拷貝構造函數/分配在C++ 11
class Foo
{
public:
Foo() { }
Foo(Foo const&) = delete; // Line 365
Foo& operator=(Foo const&) = delete; // Line 366
};
不編譯。它抱怨:
CPPConsole.cpp(365):錯誤C2059:語法錯誤:';'
CPPConsole.cpp(365):錯誤C2238:在';'之前的意外標記(s)
CPPConsole.cpp(366):error C2059:syntax error:';'
CPPConsole.cpp(366):錯誤C2238:在';'之前的意外標記(s)
這還不支持?奇怪的是,Intellisense似乎認識到這個構造。它說「智能感知:函數」Foo :: operator =(const Foo &)「(在行366處聲明)不能被引用 - 它是一個刪除函數」
我在想什麼?
謝謝!也用歷史的角度回答問題+1。 – ForeverLearning
我不確定intellisense解析器比提供的編譯器更接近標準。當intellisense在編譯器的ADL發現它沒有問題時顯示「沒有操作符匹配的操作數」時,我經常會觀察到相反的情況。它看起來不像一致性是intellisense不同的解析器的原因,而是解析速度。 –
@Gene - 編譯器因未正確執行ADL和模板而出名。EDG前端更可靠。 –