Czy to legalne C++?Czy możesz użyć rozmiaru jednego członka podczas deklarowania innego członka?
struct foo
{
int a[100];
int b[sizeof(a)/sizeof(a[0])];
};
GCC 4.6 akceptuje to, ale MSVC 2012 nie. Wygląda na to, że powinno to być w porządku dla mnie, ale trochę Googling nie pomogło i nie wiem, gdzie szukać w standardzie.
MSVC 2012 daje następujący wynik:
error C2327: 'foo::a' : is not a type name, static, or enumerator
error C2065: 'a' : undeclared identifier
error C2070: ''unknown-type'': illegal sizeof operand
warning C4200: nonstandard extension used : zero-sized array in struct/union
możliwe duplikat [Dlaczego nie mogę zainicjować const statycznego członka lub statyczną tablicę w klasie?] (Http: // stackoverflow.com/questions/9656941/whyi-i-ant-initialize-non-const-static-member-lub-static-array-inclass) –
Nawet jeśli ostateczna przyczyna jest podobna, to pytanie wygląda zupełnie inaczej niż ja . – Gorpik
Odpowiedni akapit w standardzie C++ 11 to Klauzula 5, paragraf 8, myślę. – jrok