Few questions about this implementation. First of all, if `k` is not found in `m`, then `f == m.end()`, and `f->second` is undefined I believe. So when you use `find`, you need to check this case and act accordingly. If you just want to raise an exception, then just use `m[k]`. I.e.:
```diff
diff --git a/src/dict.cpp b/src/dict.cpp
index 125b64c..f856aa3 100644
--- a/src/dict.cpp
+++ b/src/dict.cpp
@@ -175,8 +175,7 @@ bool umap_basic_basic_equal(const umap_basic_basic &a,
 
 unsigned get_map_integer_uint(map_integer_uint &m, const RCP<const Integer> &k)
 {
-    auto f = m.find(k);
-    return f->second;
+    return m[k];
 }
 
 }
```

Conclusion: I would simply remove this function and just use `m[k]` directly. If you want special handling of when the element `k` is not found, then simply do the handling at the place of the code where it is used, since only there you know what you want to do.