テンプレート化されたときに、派生クラスが保護された基本クラスメンバーにアクセスすることを許可されていないのはなぜですか?
class MyBase {
protected:
int foo;
};
template<typename Impl>
class Derived : public Impl {
public:
int getfoo() {
return static_cast<Impl*>(this)->foo;
}
};
コンパイラはfooが保護されていると文句を言います。なぜ?
error: int MyBase::foo is protected