1、模板参数除了是类型以外,还可以是数值。数值可以是常整数、枚举、指向外部链接的指针。字符串常量不可以。
由于字符串常量是一种内部连接的变量,也就是说不同模块内的两个同值的字符串常量,其实是不同的变量。如
template<char const * name>class MyClass{...};
MyClass<"HELLO"> x;//错误,不能使用字符串常量"HELLO"
此外,全局性的指针也不能拿来作为模板参数。
char const *s = "hello";
MyClass<s> x;//错误,s是指向内部连接的指针
但是,可以如下定义
extern char const s[] = "HELLO";
MyClass<s> x;