January 2018
Intermediate to advanced
374 pages
9h 53m
English
In order to enable the compiler to calculate the hash-sum at compile time, we rewrite the hash_function() to take a raw null-terminated char string as parameter as an advanced class like std::string cannot be evaluated at compile time. Now, we can mark the hash_function() a constexpr:
constexpr auto hash_function(const char* str) -> size_t {
auto sum = size_t{0};
for(auto ptr = str; *ptr != '\0'; ++ptr)
sum += *ptr;
return sum;
}
Now, let's invoke this with a raw literal string known at compile time:
auto hash = hash_function("abc");
Then, the compiler will generate the following piece of code, which is the sum of the ASCII values corresponding to a, b, and c (97, 98, and 99):
auto hash = ...