下面的代碼是否便攜?STL typedef的便攜性如何?
template<typename In>
struct input_sequence_range : public pair<In,In> {
input_sequence_range(In first, In last) : pair<In,In>(first, last) { }
};
template<typename Arr>
input_sequence_range<Arr*> iseq(Arr* a,
typename iterator_traits<Arr*>::difference_type n)
{
return input_sequence_range<Arr*>(a, a + n);
}
template<typename Iter>
input_sequence_range<Iter> iseq(Iter first, Iter last)
{
return input_sequence_range<Iter>(first, last);
}
具體地說我質疑超載性病的便攜:: iterator_traits <> :: difference_type。如果它的typedeffed,例如,int *(因爲bizzare可能;我認爲標準不禁止這個),然後調用iseq()爲一個int數組將是不明確的。
關於iterator_traits <> typedefs的標準保證是什麼?