vector实例化有关问题

vector实例化问题
#include <vector>

template<typename DataType>
class CircularQueue
{
public:
CircularQueue(std::vector<DataType>::size_type size)
:size_(size),queue_(size),head_(0),rail_(0)
{
}
private:
std::vector<DataType>::size_type size_;
std::vector<DataType> queue_;
std::vector<DataType>::size_type head_ , rail_;
};


编译器提示:
e:\forjob\circularqueue\circularqueue\circularqueue.h(10): warning C4346: “std::vector<DataType>::size_type”: 依赖名称不是类型
1>          用“typename”为前缀来表示类型
1>          e:\forjob\circularqueue\circularqueue\circularqueue.h(46): 参见对正在编译的类 模板 实例化“CircularQueue<DataType>”的引用
1>e:\forjob\circularqueue\circularqueue\circularqueue.h(10): error C2061: 语法错误: 标识符“size_type”

为什么识别不了size_type呢?小白求教

------解决方案--------------------
因为编译器不知道你的size_type是类型还是成员变量。
你要用typename std::vector<DataType>::size_type size_;
------解决方案--------------------
引用:
因为编译器不知道你的size_type是类型还是成员变量。
你要用typename std::vector<DataType>::size_type size_;


++ 

typename
------解决方案--------------------
缺失 typename