Возможный дубликат:
Официально, что такое typename для?
Где и почему я должен поместить ключевые слова и ключевые слова для имени?
рассмотрите приведенный ниже код:
template<class K>
class C {
struct P {};
vector<P> vec;
void f();
};
template<class K> void C<K>::f() {
typename vector<P>::iterator p = vec.begin();
}
Почему ключевое слово "typename" необходимо в этом примере? Существуют ли другие случаи, когда необходимо указать "typename"?