Those are ABI. Unless it is inlining them, the overhead is to stay.
Will never happen on Windows, especially not in user-mode libraries, and especially not something this pervasive.
Which is why Valve ended up using Proton.
GCC was forced to break the std::string ABI by the C++11 standard and they have been lobbing ever since against ABI breaks.
MSVC has stabilised the ABI since VS 2015, we are on VS 2026 now.
Due to customer pressure to stop doing exactly that, to the point some ISO C and C++ stuff that requires breaking the ABI has not been implemented thus far.
I am quite certain that I will find ABI breaks in GCC release notes since Slackware 2.0, when I used it for the first time.