1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// { 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>, "");