繁体   English   中英

递归类型的模板专业化

[英]Template specialization for recursive type

我正在为大型代码存储库创建检测类,为此,我创建了一个类似于以下的类:

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位于构建路径中(实际上必须如此),因此我可以以此方式对其进行工具化。 对于背景,我被赋予的任务是创建一个内存管理器,这样我就知道自己正在从事什么工作(我认为...但这实际上确实是一个单独的问题)。 但是现在我正在尝试收集所有当前使用的内存分配的统计信息,这些内存分配是按什么类型(而不是仅按大小类)划分的。

你试过了吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM