STL 中 typename的用法

最近在看STL中关于迭代器部分的时候,经常见到typename这个关键字,举个例子:

template <class _Iterator>
struct iterator_traits {
  typedef typename _Iterator::iterator_category iterator_category;
  typedef typename _Iterator::value_type        value_type;
  typedef typename _Iterator::difference_type   difference_type;
  typedef typename _Iterator::pointer           pointer;
  typedef typename _Iterator::reference         reference;
};

搞不懂这个typename在这里是什么意思,记得好像在哪儿见过,怎么也想不起来了,于是上网查资料,可是得到的结果大部分都是在定义模板类或模板函数时关于class和typename的区别,跟这个好像不搭边。不过,最终还是在一篇文章中了解了相关的知识,原话是这样的:

    “typedef   orgtype   newtype  
        当orgtype编译器不知道是一种类型时,用:   
        typedef   typename   orgtype   newtype  
        最常见的用法是,在类里面typedef了一个newtype,在另一个地方使用时。”

看了这点,略有眉目,于是自己试了试:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值