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

The first declared template parameter of a concept definition is itsprototype parameter.