如果您在C++中使用以整数值作为参数的模板,那么对于用作参数的整数变量是否有任何要求,如果该变量在函数调用中用作参数?
这是一个后续问题 在这里.如果WRT变量声明为函数或模板的"extern const int",我特别想解决这个问题吗?
我可以看到,对于某些模板情况,编译时需要参数值.这总是如此吗?有没有办法指定(可能仅用于参数值的某些用途)该值是否在运行时使用?
以下是标准.
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变量...... 用...... 初始化 "部分的本质(我不认为初始化外部计数).