Given concepts C and D,
requires{{ E1 }-> C;
{ E2 }-> D<A1, ⋯, An>;
};
is equivalent to
requires{
E1; requires C<decltype((E1))>;
E2; requires D<decltype((E2)), A1, ⋯, An>;
};
(including in the case where n is zero).
The compound-requirement in C2
requires that *x is a valid expression,
that typename T::inner is a valid type, and
that std::same_as<decltype((*x)), typename T::inner> is satisfied.