我現在只是對C++的標準感到困惑,是否有哪個編譯器支持C++標準的哪一部分?
我知道現在有三個版本:C++ 98,C++ 03和C++ 0x;
據說VC6是在C++被標準化之前寫的,所以我不在乎它是否不支持標準,但是,我發現vs2010甚至不能支持C++ 03,這裏是代碼:編譯失敗
class A
{
class B { };
friend class X;
};
class X
{
A::B mx;
class Y : A::B
{
A::B my;// This should be wrong in C++98 and C++03
// But it works in VS2010
};
};
後,我想,也許VS2010支持C++ 0x中,所以我改變了代碼:
class A
{
class B { };
friend class X;
};
class X : A::B // This should be right in c++0x, but it is an error in vs2010
{
A::B mx;
class Y : A::B
{
A::B my;
};
};
所以這讓我很困惑,而且我在這裏問:哪個版本的C++標準是vs2010支持的,如果它不完全支持這個標準的話,是否有列表告訴我哪個編譯器支持哪個標準?
「這應該是正確的在c + + 0x,但它是vs2010中的錯誤」不,它不是。如果你添加一個'int main(){}'它使用Visual C++ 2010 SP1編譯和鏈接而沒有錯誤。 Clang和g ++也接受它。 Clang也接受第一個代碼片段。 – 2011-06-09 05:41:38
它沒有編譯,但是在錯誤列表中有一個錯誤:IntelliSence:class「A :: B」無法訪問 – shengy 2011-06-09 06:00:26
智能感知錯誤檢查器不會捕獲所有錯誤並報告一些誤報(如果您發現錯誤肯定在IntelliSense錯誤檢查中,請隨時將它們提交爲[Microsoft Connect](http://connect.microsoft.com)中的問題)。從一致性的角度來看,真正重要的是編譯器是否編譯代碼。 IDE和編譯器使用完全不同的前端。 – 2011-06-09 06:03:11