1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
// { dg-options "-std=c++17 -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>(), "");