C ++ 11 наследующие конструкторы и модификаторы доступа

Предполагая следующий макет:

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;
};

Должен ли я быть в состоянии указатьDerivedПубличный конструктор здесь? VC ++ выдает следующую ошибку:

не может получить доступ к защищенному члену, объявленному в классе 'Derived'
компилятор сгенерировал здесь Derived :: Derived [указывает на использование Base :: Base]
см. объявление «Производные»

то есть он игнорирует модификатор доступа над унаследованным конструктором.

Это ограничение функции? Это не имеет никакого смысла дляBase класс, чтобы иметь открытый конструктор, так как он никогда не может быть создан непосредственно (из-за чисто виртуального метода).

Ответы на вопрос(1)

Ваш ответ на вопрос