函数模板(or类模板)的非类型形参问题
template<typename T, double *x, double &y> int Template( T a )
{
return a;
}
对于此模板的使用
非类型形参应该在<???????>里写什么
Template<????????>( 1 );
如果是类模板中的 非类型形参<????????> 和函数模板有不同的地方吗 ?
请吧所有能想到的写法都写写吧 非常感谢 !
类 非类型形参 模板 函数模板
[解决办法]
非类型的模板参数只能使用 int 一类的类型(int, char, short, 指针等等).
你使用的参数是指针和引用, 也算是整数一类的. 但是就要去这个传进去的地址是编译时确定的地址才行.
在函数里面定义的局部变量, 是到函数运行时才分配的, 它的地址就不是编译期的常量了. 必须使用全局变量才行:
template<typename T, double *x, double &y>
T Template( T a )
{
return a;
}
double x;
int main(void)
{
Template<int, &x, x>(1);
}