The following code example is taken from the book
C++20 - The Complete Guide
by Nicolai M. Josuttis,
Leanpub, 2021
The code is licensed under a
Creative Commons Attribution 4.0 International License.
// raw code
#include <type_traits>
#include <cstring>
constexpr int len(const char* s)
{
if (std::is_constant_evaluated()) {
int idx = 0;
while (s[idx] != '\0') { // compile-time friendly code
++idx;
}
return idx;
}
else {
return std::strlen(s); // function called at runtime
}
}