[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)<br>[[concepts.equality]](concepts.equality "18.2 Equality preservation") | Equality preservation |  |
| [ð](#tab:concepts.summary-row-3)<br>[[concepts.lang]](concepts.lang "18.4 Language-related concepts") | Language-related concepts | <concepts> |
| [ð](#tab:concepts.summary-row-4)<br>[[concepts.compare]](concepts.compare "18.5 Comparison concepts") | Comparison concepts |  |
| [ð](#tab:concepts.summary-row-5)<br>[[concepts.object]](concepts.object "18.6 Object concepts") | Object concepts |  |
| [ð](#tab:concepts.summary-row-6)<br>[[concepts.callable]](concepts.callable "18.7 Callable concepts") | Callable concepts |  |
