// { dg-do compile { target c++20 } }
template<typename T>
concept C1 =
    requires () {
        { T::smf() } noexcept;
    };
struct M1 {
    static void smf() noexcept;
};
template<typename T>
concept C2 = C1<typename T::type>;
struct M2 {
    using type = M1;
};
static_assert(C2<M2>, "");