3 ms·
For C++, you don’t need that fancy struct. You can just use inline namespaces, which were specifically designed as a portable form of symbol versioning. But m
by comex 6y ago
For C++, you don’t need that fancy struct. You can just use inline namespaces, which were specifically designed as a portable form of symbol versioning.
But making the standard library work with a changed ABI is the easy part. The hard part is every other library. Users expect to be able to compile libraries (both static and dynamic) and then keep using the binary artifacts even after upgrading their operating system. Admittedly, most libraries won’t use intmax_t in their public API, but if one does, changing the definition of intmax_t will cause the same types of ABI breaks as with the standard library. And unlike the standard library developers, those users probably won’t know how to fix them, nor appreciate being made to.