当前位置:  开发笔记 > 编程语言 > 正文

C++模板参数有哪些要求?

如何解决《C++模板参数有哪些要求?》经验,为你挑选了1个好方法。

如果您在C++中使用以整数值作为参数的模板,那么对于用作参数的整数变量是否有任何要求,如果该变量在函数调用中用作参数?

这是一个后续问题 在这里.如果WRT变量声明为函数或模板的"extern const int",我特别想解决这个问题吗?

我可以看到,对于某些模板情况,编译时需要参数值.这总是如此吗?有没有办法指定(可能仅用于参数值的某些用途)该值是否在运行时使用?



1> mweerden..:

以下是标准.

14.3.2.1:

非类型非模板模板参数的模板参数应为以下之一:

积分或枚举类型的整数常量表达式; 要么

非类型模板参数的名称; 要么

具有外部链接的对象或函数的地址,包括函数模板和函数template-id,但不包括非静态类成员,表示为&id-expression,其中&是可选的,如果名称引用函数或数组,或者如果相应的模板参数是参考; 要么

指向成员的指针,如5.3.1中所述.

5.19.1:

在一些地方,C++要求表达式计算为整数或枚举常量:作为数组边界(8.3.4,5.3.4),作为案例表达式(6.4.2),作为位字段长度(9.6),作为枚举器初始化器(7.2),作为静态成员初始值设定项(9.4.2),以及作为整数或枚举非类型模板参数(14.3).

 constant-expression:
            conditional-expression

整数常量表达式只能包含文字(2.13),枚举器,常量变量或使用常量表达式(8.5)初始化的整数或枚举类型的静态数据成员,整数或枚举类型的非类型模板参数以及sizeof表达式.浮动文字(2.13.3)只有在转换为整数或枚举类型时才会出现.只能使用转换为积分或枚举类型的转换.特别是,除了sizeof表达式之外,不应使用函数,类对象,指针或引用,并且不应使用赋值,递增,递减,函数调用或逗号运算符.

关于你以前的帖子,我相信"const变量...... 用...... 初始化 "部分的本质(我不认为初始化外部计数).

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有