假设现在要求通过迭代器类型推测出迭代器所指对象的类型,在不考虑 value_type 的情况下,使用模板的参数推导机制实现要求,即:
<pre name="code" class="cpp">template <T>
void func(T iter)
{
//需要知道迭代器 iter 所指对象的类型,注:不是T
}
可以通过加一层函数来实现,将当前函数当做通用接口,即:
template <typaneme T>
void func(T iter)
{
funcs(iter,*iter); //通过模板函数的参数推导机制推测出所需类型
}
template <typename I, typename T>
void funcs(I iter,T t)
{
//此时 T 即为 iter 所指对象的实际类型
}
本文介绍了一种通过模板函数的参数推导机制来获取迭代器所指向对象类型的技巧。利用这种方法可以在不直接访问迭代器value_type的情况下,实现对迭代器指向类型的有效获取。
648

被折叠的 条评论
为什么被折叠?



