2011-06-26 6 views
12

In class initialization feature, cho phép khởi tạo các thành viên bình thường bên trong lớp đó,Tính năng "Khởi tạo thành viên trong lớp" có được tạo thành C++ 11 không?

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

này được đưa ra lỗi trong trình biên dịch mới nhất gcc-4.6 (với -std=c++0x). Tính năng này được đưa vào tiêu chuẩn C++ 11 hay gcc vẫn không hỗ trợ tính năng này?

+3

Ví dụ của bạn biên dịch tốt bằng tiếng kêu (svn trunk). –

+0

Bạn đã thử với gcc 4.7 chưa? Nó có thể đã được tích hợp trong. –

+0

@Matthieu, với rất nhiều nỗ lực tôi bằng cách nào đó cài đặt gcc-4.6 trên cài đặt trên Ubuntu một tuần trở lại, giả sử nó hỗ trợ tất cả các tính năng. Và bây giờ tôi đang học rằng gcc-4.7 đã được phát hành !! : '( – iammilind

Trả lời

23

Có, đó là hợp pháp trong C++ 0x. Có ví dụ về điều này tại N3290 §12.6.2/8:

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