请问侯捷书《STL源码剖析》一书,P102页的一个问题!
书中讲到这个函数,我没有理解,希望看过这本书的兄弟能帮忙解释一下,书中原文如下:
//这个函数可以很方便地决定某个迭代器地value_type
template<class Iterator>
inline typename iterator_traits<Iterator>::value_type*
value_type(const Iterator&)
{
return static_cast<typename iterator_traits<Iterator>::value_type*>(0);
}
这里为什么要用0作为强制转换的值?而且我自己写了一个测试代码测试了一下,无论是对象指针还是普通的int型指针,使用static_cast<int*>(0)和static_cast<Obj*>(0)的最后输出都是00000000,这样这个函数最后输出也是00000000,那么是如何辨别出迭代器的value_type的呢