I am wondering why we need to had the typename keyword or not in these two situations :
template <T>
void foo(void)
{
std::vector<T> v;
typename std::vector<T>::iterator it;
}
In the case of an iterator the compiler send us an error if typename is not specified.
Thank you !
From the C++ 17 Standard (17.7 Name resolution)