假设现在要求通过迭代器类型推测出迭代器所指对象的类型,在不考虑 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 所指对象的实际类型
}