模板参数
模板参数与作用域
- 模板参数会隐藏外层作用域中声明的相同名字
- 在模板内不能重用模板参数名
- 一个模板参数名在一个特定的模板参数列表中只能出现一次
模板声明
- 模板声明必须包括模板参数,不能有类型
- 模板声明中模板参数的名字不必与定义中的相同
使用类的类型成员
- C++假定通过作用域运算符访问的名字不是类型
- 关键字typename显示告诉编译器该名字是类型
template<typename T>
//由于不知道T的类型,T::value_type可能是一个static数据也可能是一个类型,typename显式说明其为类型
typename T::value_type top(const T& c){
if (!c.empty())
return c.back();
else
return typename T