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




Reply via email to