보통 단일체 템플릿 적용할 때,

class Foo : public Singleton<Foo>
{//...};

이렇게 쓰잖아, 근데

class DerivedFoo : public Foo
{//..};

이렇게 해버리면
DerivedFoo::GetInstance()는 Foo를 반환하게 되거든.

DerivedFoo는 Singleton<Foo>를 상속받고 있으니 말이야.


그렇다면 저렇게 하지 말고,
class Foo
{//..};

class DerivedFoo : public Foo
{//..};

이렇게 하고서

Singleton<Foo>::GetInstance->...
Singleton<DerivedFoo>::GetInstance->...

이렇게 쓰면 되지 않을까 싶어.


물론 관념적으로 좀 이상한 코드긴 하지만 말야.

어떻게 생각해?