Последний GotW говорит об этом. Увы, обычное хорошо написанное решение Херба Саттера не последовало. :(
отрим следующий код C ++,
template <typename Derived>
struct A
{
bool usable_;
};
template <typename Derived>
struct B : A< B<Derived> >
{
void foo()
{
usable_ = false;
}
};
struct C : B<C>
{
void foo()
{
usable_ = true;
}
};
int main()
{
C c;
}
Я получил ошибку компиляции: в функции-членеvoid B<Derived>::foo()
:
template_inherit.cpp: 12: ошибка: 'usable_' не было объявлено в этой области.
Это почему ? Любое хорошее исправление?