The constexpr keyword tells the compiler that a certain function is intended to be evaluated at compile time if all the conditions allowing for compile-time evaluation are fulfilled. Otherwise, it will execute at runtime, like a regular function.
A constexpr function has a few restrictions; it is not allowed to do the following:
- Allocate memory on the heap
- Throw exceptions
- Handle local static variables
- Handle thread_local variables
- Call any function, which, in itself, is not a constexpr.
With the constexpr keyword, writing...