switch
typedef std::uint64_t hash_t; constexpr hash_t prime = 0x100000001B3ull; constexpr hash_t basis = 0xCBF29CE484222325ull; hash_t hash_(char const* str) { hash_t ret{ basis }; while (*str) { ret ^= *str; ret *= prime; str++; } return ret; } constexpr hash_t hash_compile_time(char const* str, hash_t last_value = basis) { return *str ? hash_compile_time(str + 1, (*str ^ last_value) * prime) : last_value; } constexpr unsigned long long operator "" _hash(char const* p, size_t) { return hash_compile_time(p); } //--------------------------usage--------------------------// //oid simple_switch(char const* str) //{ // using namespace std; // switch (hash_(str)) { // case "first"_hash: // cout << "1st one" << endl; // break; // case "second"_hash: // cout << "2nd one" << endl; // break; // case "third"_hash: // cout << "3rd one" << endl; // break; // default: // cout << "Default..." << endl; // } //} //--------------------------usage--------------------------//