テンプレートを引数に取るテンプレート

テンプレートもテンプレートの引数として使える。

template <typename T> class Class
{
  T a;
};

template <template <typename Type> class C> class C1
{
  C<int> hoge;
public:
  int func() const;
};
C1<Class> c1;

引数として渡すテンプレートのテンプレート引数も、テンプレート引数として渡せる。

template <template <typename Type> class C, typename T> class C2
{
  C<T> hoge;
public:
  T func() const;
};
C2<Class, int> c2;

なお、テンプレート引数テンプレート C のテンプレート引数 Type は省略可能、もといコード中で使用できない。