我有函数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.特别是,我试图避免使用多态指针,因为它们会阻止编译器内联,我们正在谈论高性能应用程序的非常小的代码片段。)
答案 0 :(得分:6)
喜欢这个。请注意,您不能部分专门化功能:
template <class PROCESSOR, int D = PROCESSOR::DIM>
struct op
{
void operator()(...);
};
template <class PROCESSOR>
struct op<PROCESSOR, 2>
{
void operator()(...);
};