c++ templates nested typedef typename

C++ Nested Template Class Class Issue



templates typedef (1)

Di esto:

template <typename T> template <typename U> std::map<char, typename HashTrie<T>::template Node<U> > HashTrie<T>::Node<U>::foo() { }

Tengo un problema con la declaración del método para una plantilla de clase anidada. Tengo algo como esto:

template <typename T> class HashTrie { template <typename Y> class Entry { // members and methods here }; template <typename U> class Node { // members and methods here }; // members and methods here }

Lo siguiente parece funcionar sin problemas:

template <typename T> template <typename Y> HashTrie<T>::Entry<Y> HashTrie<T>::Entry<Y>::someMethod() { //... }

Sin embargo, esto no:

template <typename T> template <typename U> std::map<char, HashTrie<T>::Node<U> > HashTrie<T>::Node<U>::anotherMethod() { // ... }

Me aparece el siguiente error en GCC

./HashTrie.h:389: error: type/value mismatch at argument 2 in template parameter list for ‘template<class _Key, class _Tp, class _Compare, class _Alloc> class std::map’ ./HashTrie.h:389: error: expected a type, got ‘(HashTrie::Node < <expression error>)’ ./HashTrie.h:389: error: template argument 4 is invalid ./HashTrie.h:389: error: expected unqualified-id before ‘>’ token

Intenté agregar un nombre tipo, pero eso no parece ayudar

template <typename T> template <typename U> std::map<char, typename HashTrie<T>::Node<U> > HashTrie<T>::Node<U>::anotherMethod() { // ... }

resultados en ...

./HashTrie.h:389: error: template argument 2 is invalid ./HashTrie.h:389: error: template argument 4 is invalid ./HashTrie.h:389: error: expected unqualified-id before ‘>’ token

icpc dice:

./HashTrie.h(389): error: template parameter "HashTrie<T>::Node [with T=T]" may not have a template argument list std::map<char, typename HashTrie<T>::Node<U> > HashTrie<T>::Node<U>::newNodeMap() {

No estoy seguro de qué hacer aquí, y me costó encontrar problemas similares en la web. Cualquier ayuda sería apreciada.