部分专注于作为模板参数

时间:2015-05-18 14:53:55

标签: c++

我有一个结构,我用它作为模板参数来配置一些类:

template <int _DIM, class _TYPE>
struct CONFIG{
    static constexpr int DIM = _DIM;
    using TYPE = _TYPE;
};

然后我需要部分专门化一个类。我目前通过以下方式执行此操作:

将实例化模板的行:

template <class CONFIG> instantiate(){
    Calculator<CONFIG::DIM, typename CONFIG::NODE> calc;
}

要专门化的模板:

template <class TYPE>
struct Calculator<2, TYPE>{
    static void fct(TYPE t){

    }
};

是否有办法使用CONFIG类型的模板参数直接实例化和专门化计算器?

1 个答案:

答案 0 :(得分:1)

更改您的实例化,如下所示:

template <class Config> instantiate(){
    Calculator<Config> calc;
}

然后像这样专注:

template <class T>
struct Calculator<CONFIG<2, T>>{
    static void fct(T t){

    }
};

像对模板参数CONFIG和结构CONFIG一样重载名称通常是一个坏主意。虽然它们与您有关,但编译器对它们的处理方式却截然不同。