https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95242
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Another way to implement the __unspec constructor would be: consteval __unspec(int __n) { if (__n != 0) throw __n; } But I think I discussed this with Richard Smith in Prague and we realised there was a problem with it, but I might be misremembering.