Concept (generic programming)

In generic programming, a concept is a description of supported operations on a type, including syntax and semantics.

The term concept (and its popularization) is credited to Alexander Stepanov,[2][3] the primary designer of the STL.

In the C++ 1998 standard, the Concept term was introduced to name just a simple description of the requirements for particular type, usually being a template parameter.

It was not encoded in the language explicitly – the concept was expressed only by what operations are attempted on objects of that type and what is expected to work (that is, to compile correctly).

[5]) The Nim programming language implements concepts as a series of arbitrary compile-time boolean predicates.