35 typedef std::tuple<int, Class*, Class*> OpBinKey;
39 std::size_t operator()(
const OpBinKey& key)
const {
41 std::size_t h1 = std::hash<int>()(
static_cast<int>(std::get<0>(key)));
42 std::size_t h2 = std::hash<const void*>()(std::get<1>(key));
43 std::size_t h3 = std::hash<const void*>()(std::get<2>(key));
45 return h1 ^ (h2 << 1) ^ (h3 << 2);
48 typedef std::unordered_map<OpBinKey, void*, OpBinKeyHash> OpBinMap;
55 auto key = OpBinKey{
static_cast<int>(op), leftType, rightType};
56 auto it = map_.find(key);
62 void regFunc(EOpBinType op, Class* leftType, Class* rightType,
void* func)
64 map_[OpBinKey{
static_cast<int>(op), leftType, rightType}] = func;