我有函数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。特别是,我尝试避免多态指针,因为它们会阻止编译器内联,我们正在讨论高性能应用程序的非常小的代码段。)
最佳答案
像这样。请注意,您不能部分专门化功能:
template <class PROCESSOR, int D = PROCESSOR::DIM>
struct op
{
void operator()(...);
};
template <class PROCESSOR>
struct op<PROCESSOR, 2>
{
void operator()(...);
};
关于c++ - 通过模板参数类中的静态值来专门化功能模板,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29731783/