È questo C++ legale?È possibile utilizzare la dimensione di un membro quando si dichiara un altro membro?
struct foo
{
int a[100];
int b[sizeof(a)/sizeof(a[0])];
};
GCC 4.6 lo accetta, ma MSVC 2012 no. Sembra che dovrebbe andare bene per me, ma un po 'di Google non ha aiutato e non so dove cercare lo standard.
MSVC 2012 ha pronunciato la seguente uscita:
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
possibile duplicato del [Perché non riesco a inizializzare il membro statico non const o array statico in classe?] (Http: // stackoverflow.com/questions/9656941/why-i-cant-initialize-non-const-static-member-or-static-array-in-class) –
Anche se la causa finale è simile, la domanda mi sembra molto diversa . – Gorpik
Il paragrafo pertinente nello standard C++ 11 è la clausola 5, paragrafo 8, penso. – jrok