Why is the return type of std::count
the difference_type
of the iterators (often a ptrdiff_t
).
Since count can never be negative, isn't size_t
technically the right choice? And what if the count exceeds the range of ptrdiff_t
since the theoretical possible size of an array can be size_t
?
EDIT: So far there is no suitable answer as to why the function returns ptrdiff_t
. Some explanation gathered from the answers below is that the return type is iterator_traits<InputIterator>::difference_type
which is generic and can be anything. Up until that point it makes sense. There are cases where the count may exceed size_t
. However, it still does not make sense why the return type is typedef ptrdiff_t iterator_traits<InputIterator>::difference_type
for the standard iterators instead of typedef size_t iterator_traits<InputIterator>::difference_type
.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…