https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95769
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to John Simon from comment #2) > (In reply to Jakub Jelinek from comment #1) > > If you want to ensure a function is evaluated at compile time, it needs to > > be either C++20 consteval, or you need to evaluate it in constant expression > > context, e.g. constexpr auto x = expensive_function(10000); > > in this case, doing that will make the `other_function` consteval too, so I > can't call it with non-constant values. So you can't make it consteval then, but you can still assign it into const variable (or even constinit in C++20 to abort compilation if not evaluated into constant). Without that, the constexpr means nothing, the compiler might or might not evaluate it at compile time.