https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117849
--- Comment #6 from Patrick Palka <ppalka at gcc dot gnu.org> --- The error error: template argument 2 is invalid is a parse error that's ultimately caused by PR104255, I think. If we fix this parse error the example should hopefully constexpr evaluate OK with our P2280 support. > I also added a 'size(t) > 0' check and a check for a type that is not > statically sized, where the concept shouldn't become ill-formed either. FWIW I think GCC is correct to diagnose this due to https://eel.is/c++draft/temp.constr#atomic-3, which mandates that an atomic constraint after substitution yields a constant expression of type bool, but here it's non-constant.