¿Los miembros de datos de la clase de plantilla base no son visibles en la clase de plantilla derivada?

Considere el siguiente código 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;
}

Tengo un error de compilación: en la función miembrovoid B<Derived>::foo():

template_inherit.cpp: 12: error: 'usable_' no se declaró en este ámbito.

Porqué es eso ? ¿Alguna buena solución?

Respuestas a la pregunta(1)

Su respuesta a la pregunta