Почему возвращается тип std::count
a ptrdiff_t
?
Поскольку счетчик никогда не может быть отрицательным, не является size_t
технически правильным выбором? И что, если счетчик превышает диапазон ptrdiff_t
, так как теоретический возможный размер массива может быть size_t
?
EDIT: До сих пор нет подходящего ответа, почему функция возвращает ptrdiff_t
. Некоторое объяснение, полученное из приведенных ниже ответов, состоит в том, что тип возврата iterator_traits<InputIterator>::difference_type
является общим и может быть любым. До этого момента это имеет смысл. Бывают случаи, когда счетчик может превышать size_t
. Однако по-прежнему не имеет смысла, почему тип возврата typedef ptrdiff_t iterator_traits<InputIterator>::difference_type
для стандартных итераторов вместо typedef size_t iterator_traits<InputIterator>::difference_type
.