これは合法的なC++ですか?
struct foo
{
int a[100];
int b[sizeof(a) / sizeof(a[0])];
};
GCC 4.6はそれを受け入れますが、MSVC2012は受け入れません。それは私には問題ないように思えますが、少しのグーグルは役に立たず、標準のどこを見ればよいのかわかりません。
MSVC 2012は、次の出力を提供します。
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