Can you use the sizeof one member when declaring another member?
c++
Solution
This was illegal in C++03 because these members are nonstatic datamembers.
Starting from C++11 this is legal since in an unevaluated operand you can use nonstatic datamembers without having a corresponding object.
Problem
Is this legal C++? ``` struct foo { int a[100]; int b[sizeof(a) / sizeof(a[0])]; }; ``` GCC 4.6 accepts it, but MSVC 2012 doesn't. It seems like it should be fine to me, but a bit of Googling didn't help and I don't know where to look in the standard. MSVC 2012 gives the following output: ``` 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 ```