An input is an object which transmits a sequence of objects of unspecified length.
An input can provide a hint of the number of objects to be transmitted, so that the receiver can preallocate memory (e.g. std::vector::reserve()). The hint may be either too low or too high. A hint of zero should be used when a usable hint is not known, or would be too costly to compute. This corresponds to transmitting no information at all.