Это недопустимо, поскольку внутреннее производное не является классом, но само является шаблоном, а не допустимым аргументом для производного шаблона.
Способ, которым это обычно делается, состоит в том, чтобы иметь набор реализаций производных шаблонов, а затем каждая реализация имеет отдельный класс, который используется для создания экземпляра этой реализации в виде конкретного класса.
template <typename T>
struct base
{
};
template <typename T>
struct derived_impl : base<T>
{
};
struct derived : derived_impl<derived>
{
};
template <typename T>
struct derived_of_derived_impl: derived_impl<T>
{
};
struct derived_of_derived : derived_of_derived_impl<derived_of_derived>
{
};