我有这个代码:
template <typename T>
class CircularBuffer
{
public:
typename typedef std::list<T>::iterator iterator;
//other code
};
迭代器声明中的 typename 有什么作用?我知道 typedef 是在说“我有一个列表迭代器,我想称之为'iterator'。但是 typename 的目的是什么?仅仅是因为我的列表可以存储我需要的任何 typename T 吗?是为了什么别的?
谢谢,
汤姆
编辑:是不是因为列表迭代器是一个合格的依赖类型,所以我需要 typename 在它之前?或者,更正确地说,我正在定义的 typedef,基于 std::list::iterator 类型的“迭代器”是一个合格的依赖类型,因为它是一个合格的依赖列表的迭代器?