What's the use of the derived class as a template parameter?
-
26-09-2019 - |
문제
What's the purpose of this pattern? What is it called? It looked very strange when I saw it the first time, though I have now seen it many times.
template<typename Derived>
struct Base {
//...
};
struct Example : Base<Example> {
//...
};
다른 팁
It's called the Curiously Recurring Template pattern, and allows for static polymorphism.
It's useful when you want to add functionality to a specific class, but want the utility to be usable in a generic case. By making the utility dependent on and use a template parameter, you can achieve both.
Curiously Recurring Template Pattern, or CRTP as we call it.
제휴하지 않습니다 StackOverflow