template parameter

  • 종류
    • type
    • non-type
      • 정수형 상수
      • enum
      • 포인터, 함수 포인터
      • auto (cpp17)
      • 실수형 상수 (cpp20)
    • template
  • 예시
      template<typename T, int N, template<typename> class C>
    class object
    {};
    
    int main()
    {
        object<int, 10, list> obj1;
    }
      
  • default parameter
      template<typename T1 = char, typename T2 = float>
      
  • container adapter
    • 기본안. container를 필요에 따라 바꿀 수 있음

        template<typename T, typename C = std::deque<T>> //
      class stack
      {
          C c;
      public:
      ~
      }
      
      int main()
      {
          stack<int, std::vector<int>> s2;
          stack<int> s2;
      }
        
    • 개선안 (template template parameter)

        template<typename T,
      template<typename, typename> class C = std::vector, //
      typename Ax = std::allocator<T> >
      class stack
      {
          C<T, Ax> c;
      public:
          ~
      }
      
      int main()
      {
          stack<int> s1;
          stack<int, std::vector> s1;
      }
        
    • 추가

      • deque, vector같은 애들 두번째 인자로 default값이 있어서 template class C로 해도 가능
      • 그러면 사설 데이터 컨테이너도 넣을 수 있을 수 있다.