模板类将自身作为模板参数

时间:2017-02-05 04:51:33

标签: c++ templates

上下文

下面简化的类是Chunk<T>的容器。

template <typename T, template <typename> class C = Chunk>
class           ChunksManager
{
  C<T>   *m_origin;
  // ...
}

第二个模板参数的要点是指定Chunk的继承版本。

问题

现在,如果我想在InheritedChunk方法中调用Chunk的非继承方法(通过方法指针),我需要InheritedChunk类型。 这导致我写这个:

  C<T, C<T> >   *m_origin;

这里的问题是我不能无休止地指定第二个模板参数。我的想法是它可以使用Chunk的第二个参数的默认值...

template <typename T, typename C>
class           Chunk;
template <typename T, typename C = Chunk<T> >
class           Chunk

...但缺少默认值的第二个参数(如果我指定C则不会声明)。

当我尝试使用模板模板参数时遇到同样的问题:

//                           recursive argument here
//                                      v
template <typename T, template <typename> class C>
class           Chunk

有没有办法解决这个问题?

0 个答案:

没有答案