cpp/language/consteval


 * - specifies that a function is an immediate function, that is, every call to the function must produce a compile-time constant

Explanation
The specifier declares a function or function template to be an immediate function, that is, every  call to the function must (directly or indirectly) produce a compile time.

An immediate function is a, subject to its requirements as the case may be. Same as, a specifier implies. However, it may not be applied to destructors, allocation functions, or deallocation functions.

At most one of the, , and specifiers is allowed to appear within the same sequence of declaration specifiers. If any declaration of a function or function template contains a specifier, then all declarations of that function or function template must contain that specifier.

A invocation of an immediate function whose innermost non-block scope is not a  of an immediate function  must produce a constant expression; such an invocation is known as an immediate invocation.

An that denotes an immediate function may only appear within a subexpression of an immediate invocation or within an immediate function context (i.e. a context mentioned above, in which a call to an immediate function needs not to be a constant expression). A pointer or reference to an immediate function can be taken but cannot escape constant expression evaluation: