知道自己的模板参数模板的模板

Template that knows its own template parameters template

本文关键字:参数 自己的      更新时间:2023-10-16

>我有一个资源类是模板,比较是任何可以比较的类。

我有一个资源管理器<资源>

但是,我不知道如何让资源管理器了解资源中的比较模板。

这个模板语法是什么。 我设法得到了这个

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   
};