The unordered_maps that were using <const char *> as keys were working by accident, thanks to the linker making it so the identifier strings had the same pointer, due to deduplication (this only works for access from the library itself). The ones that were using were working correctly, but for longer strings would lead to allocations for each map access. If we switch to , we avoid allocations but still get the automatic std::hash specialization.
The unordered_maps that were using <const char *> as keys were working by accident, thanks to the linker making it so the identifier strings had the same pointer, due to deduplication (this only works for access from the library itself). The ones that were using were working correctly, but for longer strings would lead to allocations for each map access. If we switch to , we avoid allocations but still get the automatic std::hash specialization.