requires { { E1 } -> C; { E2 } -> D<A, ⋯, A>; };is equivalent to
requires { E1; requires C<decltype((E1))>; E2; requires D<decltype((E2)), A, ⋯, A>; };(including in the case where n is zero). — end example
template<typename T> concept C1 = requires(T x) { {x++}; };
template<typename T> concept C2 = requires(T x) { {*x} -> std::same_as<typename T::inner>; };
template<typename T> concept C3 = requires(T x) { {g(x)} noexcept; };