给定一个模板
template <int n>
void f(){...};
我知道我可以通过以下方式将其专门用于特定值n
:
template <>
void f<2>(){...};
但是,有没有一种方法可以让我将它专门用于所有积极的n
?
我想过做以下事情
template <int n>
void f<n>(){
int dummy[n]; //invalid for n < 0
...
};
所以对于n<0
这段代码是无效的,编译器会求助于之前的定义。不幸的是,我得到的只是一个redefinition of 'void f<n>()'
错误。
注意:我猜这可能不受标准支持。我在问是否没有某种方法(可能是一些模板元编程)来实现这种效果。