Using a templated parameter's value_type

后端 未结 3 1918
时光说笑
时光说笑 2021-02-13 01:15

How is one supposed to use a std container\'s value_type?
I tried to use it like so:

#include 

using namespace std;

template 

        
3条回答
  •  故里飘歌
    2021-02-13 02:10

    You have to use typename:

    typename T::value_type pop()
    

    and so on.

    The reason is that the compiler cannot know whether T::value_type is a type of a member variable (nobody hinders you from defining a type struct X { int value_type; }; and pass that to the template). However without that function, the code could not be parsed (because the meaning of constructs changes depending on whether some identifier designates a type or a variable, e.g.T * p may be a multiplication or a pointer declaration). Therefore the rule is that everything which might be either type or variable and is not explicitly marked as type by prefixing it with typename is considered a variable.

提交回复
热议问题