C ++ 11 constructores heredados y modificadores de acceso

Asumiendo el siguiente diseño:

class Base
{
protected:
    Base(P1 p1, P2 p2, P3 p3);

public:
    virtual void SomeMethod() = 0;
}

class Derived : public Base
{
public:
    using Base::Base;

public:
    virtual void SomeMethod() override;
};

¿Debo poder especificarDerived¿El constructor como público aquí? VC ++ da el siguiente error:

no se puede acceder al miembro protegido declarado en la clase 'Derivado'
el compilador ha generado 'Derivado :: Derivado' aquí [apunta a la línea Base de base que usa]
ver declaración de 'Derivado'

es decir, está ignorando el modificador de acceso sobre el constructor heredado.

¿Es esta una limitación de la característica? No tiene ningún sentido para elBase La clase debe tener un constructor público, ya que nunca se puede crear una instancia directamente (debido al método virtual puro).

Respuestas a la pregunta(1)

Su respuesta a la pregunta