Hi Collin, > Out of curiosity though, why not use std::unordered_map [1]? Is C++ > standard library not portable enough? > > [1] https://en.cppreference.com/w/cpp/container/unordered_map
I try to avoid the C++ Standard Library, because * My general experience with C++ is that the more features from the language I use, the more it turns into a waste of time, and I have the suspicion that with the C++ library it would be the same. * There are several implementations of the C++ Standard Library, and I'm not inclined to start adding workarounds here and there, like we did with C library bugs before Gnulib was invented. * I hate bloat, and the C++ Standard Library is bloated. Even if a large amount of this bloat goes away through inlining and compiler optimizations, I hate to read through the x86_64 instructions generated by the compiler in order to understand what a certain piece of code actually does. (Reading the libstdc++ code is not an alternative, because the abuse of templates in C++ — originally invented for containers — makes that code unreadable. For comparison, the D language has similar amounts of bloat as C++, but it's at least halfway readable.) * I hate to have duplicate code at the binary level. The C++ library often instantiates the same code once for each set of template parameters. Instead, I want to have control over which function occurs only once. * The C++ Standard Library does not evolve monotonically. Up until C++ 11, they added things in backwards compatible ways. But when you peruse cppreference.com, you realize that starting with C++17 they remove features [1] or reorganize features in non-backward- compatible ways [2]. Bruno [1] https://lists.gnu.org/archive/html/bug-gnulib/2023-09/msg00054.html [2] https://git.savannah.gnu.org/gitweb/?p=gettext.git;a=blob;f=gettext-tools/examples/hello-c%2B%2B20/hello.cc