[C++] 템플릿 클래스에서 템플릿 템플릿 파라미터 를 구지 사용해야 되는 이유가 있을까요 ?

ssonacy의 이미지

지금 C++ "똑똑한 프로그래밍을 위한 C++ 템플릿 가이드" 라는 책을 보고 있는데요.. 궁금증이 생겨 질문 해 봅니다.

질문의 내용은 제목과 같이 "템플릿 클래스에서 템플릿 템플릿 파라미터 를 구지 사용해야 되는 이유가 있을까요 ?" 인데요.

템플릿 템플릿 파라미터를 소개 하기 이전에 나왔던 예제는 아래와 같습니다.

template< typename T , class CON = std::list<T> >
class stack_t
{
public:
 
    inline void push( const T& elm ) { con_.push_back( elm ); }
    inline int size() const { return con_.size(); }
 
private:
 
    CON con_;
};

그리고 템플릿 템플릿 파라미터를 소개 할때의 예저는 아래와 같습니다.

template< typename T , 
    template< typename E , 
              typename ALLOC = std::allocator< E >  > 
    class CON = std::list >
 
class stack_t
{
public:
 
    inline void push( const T& elm ) { con_.push_back( elm ); }
    inline int size() const { return con_.size(); }
 
private:
 
    CON<T> con_;
};

코드를 이리 저리 보아도, 템플릿 템플릿 파라미터를 써야 되는지 모르겠더라구요... 왜 일까요 ??