知道自己的模板参数模板的模板
Template that knows its own template parameters template
>我有一个资源类是模板,比较是任何可以比较的类。
我有一个资源管理器<资源>资源>
但是,我不知道如何让资源管理器了解资源中的比较模板。
这个模板语法是什么。 我设法得到了这个
template< template< class Compare > class ResType, class Compare >
class ResourceManager
但这会使调用站点看起来像我不想要的以下内容。
ResourceManager< Resource<Compare>, Compare> manager;
我想做
ResourceManager<Resource<Compare>> manager;
我需要能够在资源管理器中创建一个比较对象。
执行此操作
的最佳方法以及 STL 使用的方法是让 Resource
模板类将其模板参数公开为公共typedef
,然后您可以在ResourceManager
模板中轻松引用该参数:
template<class Compare>
class Resource {
// ...
public:
typedef Compare compare;
};
template<class Resource>
class ResourceManager {
// return an instance of Resource's Compare type
typename Resource::compare comp() const {
return typename Resource::compare();
}
};
有使用模板专用化的解决方案:
template < class >
class ResourceManager;
template < template < class > class ResType, class Compare >
class ResourceManager< ResType<Compare> >
{
public:
// implementation of ResourceManager template
};
相关文章:
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 没有为自己的结构调用列表推回方法
- 当从函数参数中的临时值调用复制构造函数时
- 如何创建长度由常量参数指定的数组
- 是否可以在不填充自己的参数的情况下将模板函数作为参数传递?
- 如何访问模板参数自己的模板参数?
- 在类自己的成员函数中构造类时,如何强制类模板参数推导?
- 如何使用自己的参数扩展 PointNormal 类?
- 在函数调用时C++多组参数及其自己的括号?
- 当超出列时,clang格式强制每个参数/参数拥有自己的行?
- GCC 或 Clang 关于函数参数在其自己的默认参数中的范围内的名称是否正确?
- C 超载相等运算符.我应该写自己的功能以接受通过参考或值传递的参数
- count_if使用我自己的类实现第三个参数
- 我想根据自己的参数使用count_if
- 知道自己的模板参数模板的模板
- 朋友拥有自己的类模板和其他模板参数
- 如果函数类型仅依赖于其自己的模板参数,则取决于函数类型
- C++ 集<>类对象。使用自己的比较器给出错误:C2804:二进制'operator <'参数过多
- 在自己的默认值中使用参数的名称 - 合法吗?
- 类对象作为参数传递,访问它们自己的私有成员