Requirements on types
For the first version, which takes three arguments:
• InputIterator is a model of Input Iterator.
• EqualityComparable is a model of Equality Comparable.
• InputIterator's value type is a model of Equality Comparable.
• An object of InputIterator's value type can be compared for equality with an object of type EqualityComparable.
For the second version, which takes four arguments:
• InputIterator is a model of Input Iterator.
• EqualityComparable is a model of Equality Comparable.
• Size is an integral type that can hold values of InputIterator's distance type.
• InputIterator's value type is a model of Equality Comparable.
• An object of InputIterator's value type can be compared for equality with an object of type EqualityComparable.