2011-06-26 60 views
12

In class initialization feature,其允許正常成員初始化類本身內,具有「在類成員初始化」功能製作成C++ 11嗎?

struct A { 
    int a = 0; // error: ISO C++ forbids in-class initialization of non-const static member ‘a’ 
}; 

這是給在錯誤最新的編譯器GCC-4.6(與-std=c++0x)。將此功能製作成C++ 11標準還是不支持gcc?

+3

你的例子使用clang(svn trunk)編譯得很好。 –

+0

你用gcc 4.7試過了嗎?它可能已被合併到。 –

+0

@Matthieu,我付出了很多努力,我在某種程度上在Ubuntu上安裝了gcc-4.6,並假設它支持所有功能。現在我正在學習gcc-4.7已經發布! :'( – iammilind

回答

23

是的,這在C++ 0x中是合法的。在N3290§12.6.2/ 8有一個這樣的例子:

struct C { 
    /* ... */ 
    int j = 5; // OK: j has the value 5 
};