这里有一段代码有点问题,原书是这个样子:

The typename is needed to inform the compiler that C’s iterator is supposed to be a type and not a value of some type, say, the integer 7. We can hide this implementation detail by introducing a type alias (§3.4.5) for Iterator:

template<typename T>
using Iterator<T> = typename T::iterator;

实际上,这个代码应该改成如下所示,

template<typename T>
using Iterator = typename T::iterator;

这个就是纯粹的语法问题。