Какова цель этого шаблона? Как это называется? Когда я впервые увидел это, это выглядело очень странно, хотя теперь я видел это много раз.
template<typename Derived> struct Base { //... }; struct Example : Base<Example> { //... };
Он называется шаблоном Curiious Recurring Template и допускает статический полиморфизм.
Это полезно, когда вы хотите добавить функциональность к определенному классу, но хотите, чтобы утилита могла использоваться в общем случае. Установив утилиту в зависимости от параметра шаблона и используя его, вы можете достичь и того, и другого.
Я думаю, что вы ссылаетесь на CRTP .Также см. здесь
Любопытно повторяющийся шаблон , или CRTP, как мы называем его .