A requirement is part of
a concept that describes the behavior of an
abstraction. Requirements tend to be syntactic (e.g., all Input
Iterators have a dereference operation), semantic (e.g., one
can traverse the sequence of values returned from a Forward
Iterator muliple times), or performance-related (e.g.,
incrementing an Input Iterator occurs in constant amortized
This definition is a part of the Generic Programming Glossary.