读书人

函数模板(or类模板)的非类型形参有关问

发布时间: 2013-04-20 19:43:01 作者: rapoo

函数模板(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);
}

读书人网 >C++

热点推荐