SGI STLのイテレータの特性について学ぶときに問題が発生しました。なぜvalue_type関数はSGI STLのポインタを返します
これは、イテレータのタイプを取得する関数です。
template <class Iterator>
inline typename iterator_traits<Iterator>::value_type* value_type(const Iterator&){
return static_cast<typename iterator_traits<Iterator>::value_type*>(0);
}
そして、これは私がvalue_type
機能がvalue_type*
代わりのvalue_type
を返すために持っている理由だろvalue_type
template <class ForwardIterator, class T>
inline void uninitialized_fill(ForwardIterator first, ForwardIterator last, const T& x){
__uninitialized_fill(first,last,x,value_type(first));
}
template <class ForwardIterator, class T, class T1>
inline void __uninitialized_fill(ForwardIterator first, ForwardIterator last, const T& x, T1*){
typedef typename __type_traits<T1>::is_POD_type is_POD;
__uninitialized_fill_aux(first, last, x, is_POD());
}
を呼び出す関数ですが、私は理由を理解することはできません。私の意見では、どちらの解決策もOKと思われます。
誰かが私を助けることを願っています、ありがとう!
+1テンプレートパラメータを並べ替えるだけで、それを '__uninitialized_fill :: value_type>(first、last、x);という名前で呼び出すことができたときに、 –
私はどの実装を見るべきか分かりませんが、実装のバージョンをお勧めしますか? – Jiahao
@Pyjamasは 'libC++'または 'libstdC++'プロジェクトを検索します –