根据this question,应添加typename
告诉编译器iterator
是一种类型(它是否正确?),例如
template <typename T>
void print(vector<T> &v) {
for (typename vector<T>::const_iterator it=v.begin(); it!=v.end(); ++it)
cout<<*it<<endl;
}
两个问题:
在什么情况下应该添加typename
?有人可以给我另一个例子吗?
C ++ 11中的auto
可以替换所有这些typename xxx
个案例吗?
答案 0 :(得分:0)
不是全部,而是很多。 auto
必须能够推断/推断出类型。在这样的事情:
typename T:foo_t var;