¿Es esto legal C++?¿Se puede usar el tamaño de un miembro cuando se declara a otro miembro?
struct foo
{
int a[100];
int b[sizeof(a)/sizeof(a[0])];
};
GCC 4.6 lo acepta, pero MSVC 2012 no. Parece que debería estar bien para mí, pero un poco de Google no ayudó y no sé dónde buscar en el estándar.
MSVC 2012 da el siguiente resultado:
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
posible duplicado de [¿Por qué no puedo inicializar el miembro estático no constante o matriz estática en la clase?] (Http: // stackoverflow.com/questions/9656941/why-i-cant-initialize-non-const-static-member-or-static-array-in-class) –
Aunque la causa final sea similar, la pregunta es muy diferente para mí . – Gorpik
El párrafo relevante en el estándar C++ 11 es Cláusula 5, párrafo 8, creo. – jrok