我读了这篇关于如何使用 C++ 中的 typename 关键字的精彩摘要:http: //pages.cs.wisc.edu/~driscoll/typename.html
我仍然想知道一个特定的例子:
template<typename T> class Outer{
public:
class Inner1{
T t;
};
class Inner2{
int t;
};
};
template<typename T> void foobar(void)
{
std::list<Outer<T>::Inner1> l;
}
从上面链接的文字中,我了解到我需要
std::list<typename Outer<T>::Inner1> l;
因为 Inner1 既是合格的又是从属的。
但是:Inner2 还需要一个让我感到困惑的类型名:首先,似乎很清楚 Inner2 是一种类型(嗯,这对于 Inner1 来说已经很清楚了)。其次,Inner2 完全不依赖于 T。对于所有可能的 T,Inner2 将是相同的(类型)!
使用模板内部的限定类型后是否需要 typedef?是否取决于模板参数?