https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99377
--- Comment #7 from Johel Ernesto Guerrero Peña <johelegp at gmail dot com> --- if (v == [] consteval { return std::numeric_limits<I>::max() }()) break; works too. More generally, you can avoid the linker error if you don't require the symbol at link time.