首页 > 其他 > 详细

[013]模板-非类型模板参数

时间:2014-10-20 16:55:49      阅读:207      评论:0      收藏:0      [点我收藏+]

在模板中,除了定义类型参数,我们还可以定义非类型参数。例如:

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]模板-非类型模板参数

原文:http://www.cnblogs.com/hustcser/p/4037417.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!