Difference between revisions of "cpp/concepts"
From cppreference.com
< cpp
(start) |
(+) |
||
Line 1: | Line 1: | ||
{{title|Concepts library {{mark c++20}}}} | {{title|Concepts library {{mark c++20}}}} | ||
+ | {{cpp/concepts/navbar}} | ||
The concepts library provides definitions of fundamental library concepts that can be used to perform compile-time validation of template arguments and perform function dispatch based on properties of types. These concepts provide a foundation for equational reasoning in programs. | The concepts library provides definitions of fundamental library concepts that can be used to perform compile-time validation of template arguments and perform function dispatch based on properties of types. These concepts provide a foundation for equational reasoning in programs. |
Revision as of 21:25, 17 June 2018
The concepts library provides definitions of fundamental library concepts that can be used to perform compile-time validation of template arguments and perform function dispatch based on properties of types. These concepts provide a foundation for equational reasoning in programs.
Defined in header
<concepts> | ||
Defined in namespace
std | ||
Core language concepts | ||
(C++20) |
specifies that a type is the same as another type (concept) | |
(C++20) |
specifies that a type is derived from another type (concept) | |
(C++20) |
specifies that a type is implicitly convertible to another type (concept) | |
(C++20) |
specifies that two types share a common reference type (concept) | |
(C++20) |
specifies that two types share a common type (concept) | |
(C++20) |
specifies that a type is an integral type (concept) | |
(C++20) |
specifies that a type is an integral type that is signed (concept) | |
(C++20) |
specifies that a type is an integral type that is unsigned (concept) | |
(C++20) |
specifies that a type is assignable from another type (concept) | |
(C++20) |
specifies that a type can be swapped or that two types can be swapped with each other (concept) | |
(C++20) |
specifies that an object of the type can be destroyed (concept) | |
(C++20) |
specifies that a variable of the type can be constructed from or bound to a set of argument types (concept) | |
(C++20) |
specifies that an object of a type can be default constructed (concept) | |
(C++20) |
specifies that an object of a type can be move constructed (concept) | |
(C++20) |
specifies that an object of a type can be copy constructed and move constructed (concept) | |
Comparison concepts | ||
specifies that operator == is an equivalence relation (concept) | ||
specifies that the comparison operators on the type yield a total order (concept) | ||
Object concepts | ||
(C++20) |
specifies that an object of a type can be moved and swapped (concept) | |
(C++20) |
specifies that an object of a type can be copied, moved, and swapped (concept) | |
(C++20) |
specifies that an object of a type can be copied, moved, swapped, and default constructed (concept) | |
(C++20) |
specifies that a type is regular, that is, it is both semiregular and equality_comparable (concept) | |
Callable concepts | ||
(C++20) |
specifies that a callable type can be invoked with a given set of argument types (concept) | |
(C++20) |
specifies that a callable type is a Boolean predicate (concept) | |
(C++20) |
specifies that a callable type is a binary relation (concept) | |
(C++20) |
specifies that a relation imposes a strict weak ordering (concept) |