The compiler told you what to do. Write typename before ptrModel<std::vector<Data> >::Type , for example:
typedef typename ptrModel<std::vector<Data> >::Type Type;
The reason for this requirement is that the compiler does not currently know if ptrModel<std::vector<Data> >::Type describes a member variable or nested type. He cannot even figure it out by looking at the definition of ptrModel , because for std::vector<Data> may be a specialization of ptrModel in the program where it has not yet received changes, which of these changes ::Type means. Therefore, you need to explicitly state this.
The name ptrModel<std::vector<Data> >::Type has a "dependent scope" because it is in a scope that depends on the creation of the template.
Tyler McHenry Jul 22 '10 at 17:31 2010-07-22 17:31
source share