Может ли класс наследовать от другого шаблона класса, который конкретизируется сам по себе?
Я шел через некоторый код, и я нашел что-то вроде этого:
class GarbageCollectorProcess : public process::Process<GarbageCollectorProcess>
Мне было интересно, если это было действительным, что нужно сделать. Если да, не должно ли это привести к некоторому циклу самоопределения, потому что мы определяем GarbageCollectorProcess с использованием другого класса, который зависит от определения GarbageCollectorProcess?
2 ответа
"Мне было интересно, если это было действительным, что нужно сделать".
Да, это действительно так, а также очень распространенный шаблон, называемый Curious Recurring Template Pattern, или короткий CRTP.
Например, он используется для реализации статического полиморфизма.
"Если да, не должно ли это привести к некоторому циклу самоопределения, потому что мы определяем GarbageCollectorProcess, используя другой класс, который зависит от определения GarbageCollectorProcess?"
Нет, там нет цикла самоопределения. Класс шаблона создается только один раз.