[temp.concept] (original) (raw)
13 Templates [temp]
13.7 Template declarations [temp.decls]
13.7.9 Concept definitions [temp.concept]
A concept is a template that defines constraints on its template arguments.
A concept-definitiondeclares a concept.
Its identifier becomes a concept-namereferring to that concept within its scope.
[Example 1: template<typename T> concept C = requires(T x) { { x == x } -> std::convertible_to<bool>;};template<typename T> requires C<T>T f1(T x) { return x; } template<C T>T f2(T x) { return x; } — _end example_]
[Note 1:
A concept-id ([temp.names]) is evaluated as an expression.
— _end note_]
The first declared template parameter of a concept definition is itsprototype parameter.
A type conceptis a concept whose prototype parameter is a type template parameter.