仮想関数に対するアクセス修飾 (public / protected / private) を、
オーバーライドしてもそのまま引き継がせることが出来たらなと思う。
自由に変更できてしまうのが気持ち悪くてどうにも。

class Base {
protected:
 virtual void hidden_impl() = 0; // 公開すべきではない
};

class Derive : public Base {
protected:
 virtual void hidden_impl(); // OK
public:
 virtual void hidden_impl(); // NG: Base::hidden_impl() は protected
};

これなら、継承クラスでうっかり public に書き間違えたままという
ことも無くなっていいな。