2011-06-26 10 views
12

In class initialization feature, który pozwala zainicjować normalnych członków wewnątrz samej klasy,Czy w C++ 11 wprowadzono funkcję "In initialization member class"?

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

To daje błąd w najnowszy kompilator gcc-4.6 (z -std=c++0x). Czy ta funkcja wykonana w standardzie C++ 11 lub gcc nadal go nie obsługuje?

+3

Twój przykład kompiluje się dobrze z clang (svn trunk). –

+0

Czy próbowałeś z gcc 4.7? Być może został on włączony. –

+0

@Matthieu, z mnóstwem wysiłku, zainstalowałem gcc-4.6 na Ubuntu tydzień wcześniej, zakładając, że obsługuje wszystkie funkcje. A teraz uczę się, że gcc-4.7 jest już wydany !! : "( – iammilind

Odpowiedz

23

Tak, jest to legalne w C++ 0x. Istnieje przykład tego w N3290 §12.6.2/8:

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