Monoid

A Monoid is a concept that describes a simple kind of algebraic
system. A monoid consists of a set of elements S, a
binary operation, and an identity element. The C++ representation of a
monoid consists of a function object that implements the binary
operation, a set of objects that represent the elements of S,
and an object that represents the identity element.