/*
模板除了定义类型参数,我们还可以在模板定义非类型参数。
什么是非类型形参?顾名思义,就是表示一个固定类型的常量而不是一个类型。
固定类型是有局限的,只有整形,指针和引用才能作为非类型形参,
而且绑定到该形参的实参必须是常量表达式,即编译期就能确认结果。
非类型形参的局限:
1.浮点数不可以作为非类型形参,包括float,double。具体原因可能是历史因素,也许未来C++会支持浮点数。
2.类不可以作为非类型形参。
3.字符串不可以作为非类型形参
4.整形,可转化为整形的类型都可以作为形参,比如int,char,long,unsigned,bool,short(enum声明的内部数据可以作为实参传递给int,但是一般不能当形参)
5.指向对象或函数的指针与引用(左值引用)可以作为形参
非类型实参的局限:
1.实参必须是编译时常量表达式,不能使用非const的局部变量,局部对象地址及动态对象
2.非Const的全局指针,全局对象,全局变量(下面可能有个特例)都不是常量表达式。
3.由于形参的已经做了限定,字符串,浮点型即使是常量表达式也不可以作为非类型实参
备注:常量表达式基本上是字面值以及const修饰的变量
*/
#include "stdafx.h"
#include<iostream
非类型模板参数
最新推荐文章于 2025-05-21 23:13:20 发布