这是问题的一个具体实例:正式地说,typename 是干什么用的?
我问的是编译器不知道以下是一种类型的具体原因:
#include <set>
#include <vector>
template<typename T> // T is a type, right?
void f(const char name[], const std::vector<T>& foo) // typename NOT needed here
{
for(std::set<T>::iterator itr = // here, it is needed
如果我声明:
std::set<int>::iterator itr; // no problem
上面清楚地定义了这T
是一种类型,那么为什么typename
需要一个而不是另一个呢?