[concepts.general] # 18 Concepts library [[concepts]](./#concepts) ## 18.1 General [concepts.general] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/concepts.tex#L6) 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[.](#1.sentence-1) The purpose of these concepts is to establish a foundation for equational reasoning in programs[.](#1.sentence-2) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/concepts.tex#L12) The following subclauses describe language-related concepts, comparison concepts, object concepts, and callable concepts as summarized in Table [48](#tab:concepts.summary "Table 48: Fundamental concepts library summary")[.](#2.sentence-1) Table [48](#tab:concepts.summary) — Fundamental concepts library summary [[tab:concepts.summary]](./tab:concepts.summary) | [🔗](#tab:concepts.summary-row-1) | **Subclause** | **Header** | | --- | --- | --- | | [🔗](#tab:concepts.summary-row-2)
[[concepts.equality]](concepts.equality "18.2 Equality preservation") | Equality preservation | | | [🔗](#tab:concepts.summary-row-3)
[[concepts.lang]](concepts.lang "18.4 Language-related concepts") | Language-related concepts | | | [🔗](#tab:concepts.summary-row-4)
[[concepts.compare]](concepts.compare "18.5 Comparison concepts") | Comparison concepts | | | [🔗](#tab:concepts.summary-row-5)
[[concepts.object]](concepts.object "18.6 Object concepts") | Object concepts | | | [🔗](#tab:concepts.summary-row-6)
[[concepts.callable]](concepts.callable "18.7 Callable concepts") | Callable concepts | |