关于typename跟class的使用

关于typename和class的使用


一般情况下,是用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;

}