https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117849
--- Comment #7 from Tomasz KamiĆski <tomaszkam at gmail dot com> --- >> 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. Isn't check `typename i<size(t)>;` (that is placed before) guarding the later requires? It can only pass if size(t) is constant. Or requirements inside require expr do not short-circuit?