[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 | |