У меня проблема с CRTP . То, что я хочу, это передать объявление typename снизу вверх (от производного класса к базовому классу), что кажется невозможным, поскольку производный класс неполон в точке, генерирующей базовый класс.
Какие-либо решения? Конечно, параметры шаблона делают это, но это не элегантно.
template <typename S>
class A
{
public:
using T = typename S::T; // error
};
template <typename S>
class B : public A<B<S>>
{
public:
using T = typename S::T; // error
};
template <typename U>
class C : public B<C<U>>
{
using T = U;
};