January 2018
Intermediate to advanced
374 pages
9h 53m
English
So now that we have everything in place, let's see how the compiler handles the PrehashedString. Here is a simple test function which returns the hash value for the string "abc":
auto test_prehashed_string() {
const auto& hash_fn = std::hash<PrehashedString>{};
const auto& str = PrehashedString("abc");
return hash_fn(str);
}
For simplicity, we used the string "abc". As our hash function simply sum the values, and the letters in "abc" have the following ASCII values: a = 97, b = 98, and c = 99, the assembler (generated by Clang 4.0) ought to output the sum 97+98+99 = 294 somewhere. Inspecting the assembler we can see that the test_prehashed_string() function compiles to exactly one return statement which returns ...