[
Example 1: 
template<typename>
concept C = true;
template<typename T, template<typename> concept CC>
concept D = CC<T>;
template<typename U,
         template<typename> concept CT,
         template<typename, template<typename> concept> concept CU>
int f() requires CU<U, CT>;
int i = f<int, C, D>();
 
In this example, the associated constraints of 
f
consist of a concept-dependent constraint
whose expression is the concept-id 
CU<U, CT> with the mapping
U↦U,CT↦CT,CU↦CU.  The result of substituting 
D into this expression is 
D<U, CT>.  We consider the normal form of the resulting concept-id,
which is 
CC<T> with the mapping
T↦U,CC↦CT.  By recursion, 
C is substituted into 
CC<T>, and the result
is normalized to the atomic constraint 
true, which is satisfied
. — 
end example]