#include #include using namespace std; // Hash function for pointers using reinterpret_cast template struct PointerHash { size_t operator()(const T* pointer) const { uintptr_t addr = reinterpret_cast(pointer); // Ensure the address fits within size_t #if SIZE_MAX < UINTPTR_MAX addr %= SIZE_MAX; #endif return addr; } }; int main() { int x = 10; int* ptr = &x; PointerHash hash_func; size_t hash_value = hash_func(ptr); cout << "Hash value: " << hash_value << endl; return 0; }