https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96821
Patrick Palka <ppalka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |INVALID --- Comment #4 from Patrick Palka <ppalka at gcc dot gnu.org> --- GCC's behaviour is correct, I think. Since the concept constant_expression doesn't use its template parameter, the normal form of foo's associated constraint is just 'true (with an empty parameter mapping)', so the satisfaction value of with_value_constant<T> for any T is trivially true and independent of T. Another workaround to have the with_value_constant concept work as you expect is to make the constant_expression concept depend on its template parameter in a trivial way, e.g. define it as: template <auto V> concept constant_expression = requires { V; };