我有一个结构,我用它作为模板参数来配置一些类:
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类型的模板参数直接实例化和专门化计算器?
答案 0 :(得分:1)
更改您的实例化,如下所示:
template <class Config> instantiate(){
Calculator<Config> calc;
}
然后像这样专注:
template <class T>
struct Calculator<CONFIG<2, T>>{
static void fct(T t){
}
};
像对模板参数CONFIG
和结构CONFIG
一样重载名称通常是一个坏主意。虽然它们与您有关,但编译器对它们的处理方式却截然不同。