:
template<typename T> concept C = true;
template<C T> void f1(T);
template<typename T> requires C<T> void f2(T);
template<typename T> void f3(T) requires C<T>;
The functions
f1,
f2, and
f3 have the associated
constraint
C<T>.
template<typename T> concept C1 = true;
template<typename T> concept C2 = sizeof(T) > 0;
template<C1 T> void f4(T) requires C2<T>;
template<typename T> requires C1<T> && C2<T> void f5(T);
The associated constraints of
f4 and
f5
are
C1<T> ∧ C2<T>.
template<C1 T> requires C2<T> void f6();
template<C2 T> requires C1<T> void f7();
The associated constraints of
f6 are
C1<T> ∧ C2<T>,
and those of
f7 are
C2<T> ∧ C1<T>. —
end example