18 Concepts library [concepts]

18.1 General [concepts.general]

This Clause describes library components that C++ programs may use to perform compile-time validation of template arguments and perform function dispatch based on properties of types.
The purpose of these concepts is to establish a foundation for equational reasoning in programs.
The following subclauses describe language-related concepts, comparison concepts, object concepts, and callable concepts as summarized in Table 45.
Table 45: Fundamental concepts library summary [tab:concepts.summary]
Equality preservation
Language-related concepts
Comparison concepts
Object concepts
Callable concepts