Using declaration for a class member shall be a member declaration (C++2003)
<p>Paragraph 7.3.3. of C++2003 standard states that</p>

<blockquote>
  <p>Using declaration for a class member shall be a member declaration.</p>
</blockquote>

<p>This means that the following gives a syntax error:</p>

<pre><code>struct S1
{
    static int var1;
};

using S1::var1;
</code></pre>

<p>While the following compiles fine:</p>

<pre><code>namespace N2
{
    int var2;
}

using N2::var2;
</code></pre>

<p>Does anybody know the rationale (if any) behind that?</p>

<p>Even more, the standard gives explicit example with static data member of the struct and tells that it should cause syntax error. MS C++ gives this error:</p>

<blockquote>
  <p>cpptest1.cxx(9) : error C2885: 'S1::var1': not a valid using-declaration at non-class scope</p>
</blockquote>

<p>It is still not clear why this should be banned.</p>
