Is there any way to increase visibility with a using declaration? : <p>The following code doesn't compile:</p>

<pre><code>class C
{
    private:

        int m_x;

    protected:

        C(int t_x) : m_x(t_x) { }

};

class D : public C
{
    public:

        using C::C;

};

int main(int argc, char **argv)
{
  D o(0);
}
</code></pre>

<p>The compiler's objection is that the constructor for C is declared <code>protected</code>, meaning that I can't access it from <code>main</code>.  In other words, it seems like the <code>using</code> declaration drags the original visibility of the identifier with it, despite the fact that it lives in the <code>public</code> block.</p>

<p>Two questions:</p>

<ol>
<li>Why does this happen?  (Both in terms of the rules for how this works, and the rationale for making those rules).</li>
<li>Is there any way I can get around this without explicitly writing a constructor for <code>D</code>?</li>
</ol>
