0
這STL常量_TP *的局部特化是代碼:是在stl_iterator_base.h在必要
template <class _Iter>
inline typename iterator_traits<_Iter>::value_type*
__value_type(const _Iter&)
{
return static_cast<typename iterator_traits<_Iter>::value_type*>(0);
}
reutrn _Iter的VALUE_TYPE *的函數。
這是常量的局部特化_TP *
template <class _Tp>
struct iterator_traits<const _Tp*> {
typedef random_access_iterator_tag iterator_category;
typedef _Tp value_type;
typedef ptrdiff_t difference_type;
typedef const _Tp* pointer;
typedef const _Tp& reference;
};
是常量_TP的部分特化*必要?如果我們調用
__value_type(const _Iter&)
我們實際調用
iterator_traits<_Iter>
沒有常量。
iterator_traits<const _Iter>
永遠不會發生。
C++標準沒有強制任何特定的實現。這不是關於C++的問題,而是關於您的供應商的問題。 –
如果'_Iter'是'const char *'(例如)那麼是的,你將使用這種特殊化。 (這是一個指向const的指針,而不是一個常量指針) – immibis
@KerrekSB我明白了,謝謝! – stonecutter