Nested templates with dependent scope

前端 未结 1 1105
隐瞒了意图╮
隐瞒了意图╮ 2020-11-27 11:46

What is dependent scope and what is the meaning of typename in the context of the following error?

$ make
g++ -std=gnu++0x main.cpp
main.cpp:18:10: error: n         


        
相关标签:
1条回答
  • 2020-11-27 12:16

    The compiler told you exactly what to do. Write typename before ptrModel<std::vector<Data> >::Type, like so:

     typedef typename ptrModel<std::vector<Data> >::Type Type;
    

    The reason for this requirement is that the compiler doesn't at this point know whether ptrModel<std::vector<Data> >::Type describes a member variable or a nested type. It can't even figure that out by looking at the definition of ptrModel because there might be a specialization of ptrModel for std::vector<Data> somewhere else in the program that it hasn't gotten to yet which changes which of these things ::Type refers to. So you need to tell it explicitly.

    The name ptrModel<std::vector<Data> >::Type has a "dependent scope" because it is in a scope that depends on the instantiation of a template.

    0 讨论(0)
提交回复
热议问题