通过模板参数类中的静态值专门化功能模板

时间:2015-04-19 15:21:11

标签: c++ templates

我有函数op,我想专门针对模板参数PROCESSOR::DIMENSION = 2的所有情况。这有可能吗?或者我怎么能实现类似的东西呢?

// How to specialize this for all PROCESSOR with DIMENSION = 2?
template <class PROCESSOR>
void op(Node<PROCESSOR>& node){

}


// this is an example for template parameter PROCESSOR
template <int DIM>
class CPU
{
    public:
        static int DIMENSION = DIM;

};

(如果你怀疑是一个XY问题,你可能是对的。我在这里有一个相对复杂的设计任务,我正在评估不同的想法如何去做。其中一个导致上面的X.特别是,我试图避免使用多态指针,因为它们会阻止编译器内联,我们正在谈论高性能应用程序的非常小的代码片段。)

1 个答案:

答案 0 :(得分:6)

喜欢这个。请注意,您不能部分专门化功能:

template <class PROCESSOR, int D = PROCESSOR::DIM>
struct op
{
  void operator()(...);
};

template <class PROCESSOR>
struct op<PROCESSOR, 2>
{
  void operator()(...);
};
相关问题