This cannot work the way you expect, because std::format and std::formatter<T> do not participate in SFINAE/constraints the way normal expressions do.
The formatting machinery is specified to hard-error when the type is not formattable — and those errors are not constraint-friendly.