https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86590
--- Comment #33 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Jonathan Wakely from comment #2) > As Marc said, the only difference is the explicit instantiation > declarations. You'll get the same in C++14 if you disable them: > > #include <bits/c++config.h> > #undef _GLIBCXX_EXTERN_TEMPLATE > #include <string> > // ... > > They're only disabled temporarily for C++17 until our C++17 support is > stable, at which point we'll start exporting the new C++17 members of > std::string from libstdc++.so and re-enable the explicit instantiation > declarations. N.B. this has happened on trunk for C++17 mode. To test the current state you need to disable the explicit instantiations, either by compiling with -std=gnu++2a or via the #undef shown above.