Previous:
Mixin hertitance
, Up:
Index
CRTP
Curiously Recurring Template Pattern(CRTP; 이상한 재귀 템플릿 패턴)
패턴이지만, 디자인 패턴으로서의 자격 있다고 하기는 어려움
자기 자신을 베이스 클래스의 템플릿 인자로 상속받는다.
struct
Foo
:
SomeBase
<
Foo
>
{
// ...
}
;
자기 자신의 클래스를 베이스 클래스의 템플릿 인자로 상속받을 경우,
베이스 클래스 구현부에서 타입이 지정된 this 포인터를 사용하게 할 수 있다.
template
<
typename
Derived
>
struct
someBase
{
void
foo
(
)
{
for
(
auto
&
item
:
*static_cast<
Derived
*>
(
this
))
{
// ... // Base
에
서
Subclass
에
서
정
의
된
this
사
용
}
}
}
;