定义模板
函数模板:编译器根据实参类型实例化特定版本的函数
模板参数列表:
非类型模板参数:表示一个值
类模板:代替用户需要提供的类型或值
友元与类模板:
别名:
static函数:
每个实例都有自己的static成员实例
必须通过引用特定的实例来访问static成员
当名字表示类型时,必须用关键字typename显示标注
本身是模板的成员函数不能是虚函数
默认模板实参:
控制实例化:
避免多个文件中实例化相同模板带来的额外开销
模板实参推断
指定显示模板实参:
尾置返回类型:
函数指针:
引用折叠:
X& &, X& &&, X&& &折叠成X&
X&& &&折叠成X&&
转发:1.将函数参数定义为指向模板类型参数的右值引用,保持对应实参的所有类型信息
2.通过std::forward
重载与模板
可变参数模板:
模板特例化
定义:
部分特例化:
特例化成员: