首页 > 代码库 > [013]模板-非类型模板参数
[013]模板-非类型模板参数
在模板中,除了定义类型参数,我们还可以定义非类型参数。例如:
temlate<unsigned N, unsigned M>int foo(const char (&p1)[N], const char (&p2)[M]) { return strcmp(p1,p2);}
但是需要注意的是:编译器会在一个字符串字面常量的末尾插入一个空字符作为终结符。
例如我们调用
foo("hi", "mom");
实际上编译器会实例化如下版本
int foo(const char (p1)[3], const char (p2)[4]);
-----------
总结:在模板定义内,模板非类型参数是一个常量值。在需要常量表达式的地方,可以使用非类型参数,例如指定数组的大小等。
[013]模板-非类型模板参数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。