Why is the return type of std::count 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&lt;InputIterator&gt;::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&lt;InputIterator&gt;::difference_type for the standard iterators instead of typedef size_t iterator_traits&lt;InputIterator&gt;::difference_type.


Question: Does store-bought Kombucha spoil? If so, how can I tell?
Answer: If you're talking about raw kombucha (rather than pasteurized) then the answer is yes, inevitably,  in the sense that it loses its desired probiotic properties. The kombucha will start to grow its own culture (though small), more commonly referred to as a mother or a scoby, which forms at the top of the bottle (container) and in time will take on both the look and feel of a jellyfish (tendrils hanging down). At this stage it can be harmful to consume, especially if discolored. Gauging however when it is that your purchase has crossed over from being beneficial to not beneficial, (meaning not good for you but not bad for you either), would probably require lab equipment and a working knowledge of microbiology. Refrigeration greatly slows down the culturation process but does not bring it to a halt.