// { dg-do compile { target c++17 } } // { dg-options "-fconcepts" } template concept bool C1() { return requires() { typename T::type1; }; } template concept bool C2() { return C1() && requires() { typename T::type2; }; } template struct S { S& operator++() { return *this; } S& operator++() requires C2() { return *this; } };