https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65630
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- Strictly nothing says it has to, but it works with the old std::string, because we do export those functions from libstdc++.so We also instantiate them for the new string, I just didn't add exports for them to the linker script. We could stop instantiating them and say it's no longer supported, but it seems better to just add the export: --- a/libstdc++-v3/config/abi/pre/gnu.ver +++ b/libstdc++-v3/config/abi/pre/gnu.ver @@ -1675,6 +1675,9 @@ GLIBCXX_3.4.21 { _ZNSt7__cxx1112basic_string*; _ZNKSt7__cxx1112basic_string*; + # Concatenation operators for ABI-tagged std::basic_string + _ZStplI[cw]St11char_traitsI[cw]ESaI[cw]EENSt7__cxx1112basic_stringIT_T0_T1_EE*; + # ABI-tagged stringstreams _ZNSt7__cxx1115basic_stringbuf*; _ZNSt7__cxx1118basic_stringstream*;