递归类型的模板特化

时间:2013-07-15 23:03:59

标签: c++ templates

我正在为大型代码库创建一个检测类,为此我创建了一个类如下的类:

template <class T> class stats:public singleton<stats<T> >{...};

单例类的定义与上面所期望的一样,并且不是我可以控制的类。因为我只需要每个类型一个stat实例,我在它上面收集统计信息应该是一个单例,在我们的代码库中我们禁止自定义单例类(否则我将实现我自己的单例接口,从而防止我面临的问题) 问题是我也想要使用单例,因此会发生以下情况:

someTooledClass();
-> stats<someTooledClass>
-> singleton<stats<someTooledClass> >
-> stats<singleton<stats<someTooledClass> > >
etc.

我的问题是我可以专攻stats<singleton<T> >吗?由于T未知,我不确定这是如何工作的。 理想情况下,我不希望stats<singleton<stats<T> > >永远存在但我想要的所有其他stats<singleton<T> >。 我以前从来没有真正做过这样的事情......所以我有点困惑。

编辑: 我想我会把这个放在这里,以提高能见度。 工具单例是可能的,因为我全局覆盖new并删除我自己的自定义构建中的所有类,因为singleton在构建路径中(实际上它必须是)我可以用这种方式工具。 对于背景,我给出的任务是创建一个内存管理器,所以我知道我正在使用它(我认为......但这实际上是一个单独的问题)。但是现在我正在尝试收集所有当前使用的内存分配的统计信息,这些内存分配按类型分隔,而不仅仅是按大小类。

1 个答案:

答案 0 :(得分:1)

你试过吗?

请注意,您不能使该类不存在,但是您可以使其不从单例继承,以便打破链。

template <class T>
class stats<singleton<stats<T> > > {};