一般情况下,是用typename还是用class纯粹是一个风格问题。但是在一种情况下,它就不是一个风格问题了。为了避免潜在的语法解析二义性,你需要在从属于形式类型参数的类型名前面使用typename。这样的类型被称为从属类型,用一个例子可以说明这一点。假设你要写一个函数模板,给它一个STL容器,它将返回容器中的最后一个元素是否大于第一个元素。下面是一种实现方式:
template <typename C>
bool lastGreatThanFirst(const C&container)
{
if(container.empty())
returnfalse;
typenameC::const_iterator begin(container.begin());
typenameC::const_iterator end(container.end());
return*--end > *begin;
}
关于typename和class的使用
时间: 2024-10-12 04:45:06