Given a template class Queue with a nested Node struct.
Why is typename needed in the return type here?
template<typename T>
typename Queue<T>::Node* Queue<T>::test() {}
The nested struct Node in the template class Queue would be in the scope of Queue<T>:: without typename.
According to Where and why do I have to put the "template" and "typename" keywords?:
We decide how the compiler should parse this. If t::x is a dependent name, then we need to prefix it by typename to tell the compiler to parse it in a certain way.
But I don't see why it justifies using typename?