// { dg-options "-std=c++1z -fconcepts" }

template<typename T>
concept bool C1() {
    return requires () {
               { T::smf() } noexcept;
           };
}
struct M1 {
    static void smf() noexcept;
};
template<typename T>
concept bool C2() {
    return C1<typename T::type>();
}
struct M2 {
    using type = M1;
};
static_assert(C2<M2>(), "");
