In .hpp file I have
template <SomeEnum E>
class SomeClass {
//many definitions
class InnerClass {
//Some stuff
};
typedef std::map<std::string, InnerClass> InnerMapType;
};
in .cpp files I have
template <SomeEnum E>
SomeClass<E>::~SomeClass() {
InnerMapType::iterator iter;
//Iterate over resources
}
Compiler gives syntax error in InnerMap::iterator iter; claiming semicolon is expected before iter. If I remove the template <SomeEnum E> part compiler is happy. What did I forget and how do I make it work?
Take a look into dependent names.
To solve your issue, you need to use typename :