[vs 2005]_Checked_base

函数_Checked_base:

// _Checked_base函数,两个版本const和非const
template<class _Iter> inline
typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
	_Checked_base(_Iter &_It)
{
	typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type_tag _Base_tag;
	return _Checked_base(_It, _Base_tag);
}

template<class _Iter> inline
typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type
	_Checked_base(const _Iter &_It)
{
	typename _Checked_iterator_base_helper<_Iter>::_Checked_iterator_base_type_tag _Base_tag;
	return _Checked_base(_It, _Base_tag);
}

_Checked_iterator_base_helper模板

// 推导流程:__is_base_of==>helper2==>helper1
template <class _Iter>
class _Checked_iterator_base_helper
{
public:
	typedef _Checked_iterator_base_helper2<_Iter, __is_base_of(_Iterator_base, _Iter)> _Base_helper2;
	typedef _Checked_iterator_base_helper1<_Iter, typename  _Base_helper2::_Checked_iterator_base_type > _Base_helper1;

	typedef typename _Base_helper1::_Base_type_tag _Checked_iterator_base_type_tag;
	typedef typename _Base_helper1::_Checked_iterator_base_type _Checked_iterator_base_type;
};

_Checked_iterator_base_helper2模板

// 模板_Checked_iterator_base_helper2
template <class _Iter, bool _Inherits_from_iterator_base>
class _Checked_iterator_base_helper2
{
public:
	typedef _Unchanged_checked_iterator_base_type_tag _Checked_iterator_base_type;
};

template <class _Iter>
class _Checked_iterator_base_helper2<_Iter, true>
{
public:
	typedef typename _Iter::_Checked_iterator_base_type _Checked_iterator_base_type;
};

_Checked_iterator_base_helper1模板

// 模板 _Checked_iterator_base_helper1
template <class _Iter, class _Base_type>
class _Checked_iterator_base_helper1
{
public:
	typedef _Different_checked_iterator_base_type_tag _Base_type_tag;
	typedef _Base_type _Checked_iterator_base_type;
};
template <class _Iter>
class _Checked_iterator_base_helper1<_Iter, _Unchanged_checked_iterator_base_type_tag>
{
public:
	typedef _Unchanged_checked_iterator_base_type_tag _Base_type_tag;
	typedef _Iter _Checked_iterator_base_type;
};

_Checked_iterator_base_type_tag可能的取值:

struct _Unchanged_checked_iterator_base_type_tag
{
};

struct _Different_checked_iterator_base_type_tag
{
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值