Aussie AI
constexpr functions
-
Book Excerpt from "Generative AI in C++"
-
by David Spuler, Ph.D.
constexpr
functions
The real power is when you use constexpr
for functions.
const float SQRTPI = sqrtf(3.14f); // Works? constexpr float SQRTPI = sqrtf(3.14f); // Works?
Oh, dear! I just tested this code snippet, and the const
version works, whereas the constexpr
version fails to compile,
which is the opposite of what I was expecting.
According to an informed source that was trained on Internet scrapings,
sqrtf
is not going to be declared as a “constexpr
” function until C++26.
Alas, by then all C++ programmers will have been replaced by robots,
so feel free to skip this section.
The apparently futuristic idea is that sqrtf
should have a “constexpr
” keyword in its declaration,
because the function return value
can be computed at compile-time if you pass it a constant argument.
In other words, the compiler can evaluate “sqrtf(3.14f)
” at compile-time.
Hence, the whole function should be declared “constexpr
”
in the standard library header file.
The const
version is also probably not evaluating the sqrtf
function at compile-time, but just calling it dynamically
whenever the const
variable is first initialized (this non-compile-time initialization is allowed for const
variables, provided you don't later attempt to change its value).
Anyway, you can already declare your own function with the “constexpr
” specifier.
constexpr int twice(int x) { return x + x; }
• Next: • Up: Table of Contents |
The new AI programming book by Aussie AI co-founders:
Get your copy from Amazon: Generative AI in C++ |