Can you use the sizeof one member when declaring another member?
<p>Is this legal C++?</p>

<pre><code>struct foo
{
  int a[100];
  int b[sizeof(a) / sizeof(a[0])];
};
</code></pre>

<p>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.</p>

<p>MSVC 2012 gives the following output:</p>

<pre><code>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
</code></pre>
