https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83127
Bug ID: 83127 Summary: Missing overload for operator << of std::stringstream for old ABI Product: gcc Version: 6.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: ghjghj530-bubu at yahoo dot de Target Milestone: --- Compiling the following testcode #include <string> #include <sstream> void Main(void) { std::string testStr("Hello"); std::string testStr2("World"); std::stringstream ss; ss << testStr; testStr2 = ss.str(); } with flag: -D_GLIBCXX_USE_CXX11_ABI=0 leads to linker error: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' Setting -D_GLIBCXX_USE_CXX11_ABI=1 fixes the bug. We narrowed the problem down to a missing overload in libstdc++.a using: nm.exe -gC "libstdc++.a" > libstdc++.a.out There is only one overload for operator << and string: "std::__cxx11::basic_string" 00000000 W std::basic_ostream<char, std::char_traits<char> >& std::operator<< <char, std::char_traits<char>, std::allocator<char> >(std::basic_ostream<char, std::char_traits<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) But two overloads for operator >>: "std::__cxx11::basic_string" and "std::basic_string" 00000000 W std::basic_istream<wchar_t, std::char_traits<wchar_t> >& std::operator>><wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >(std::basic_istream<wchar_t, std::char_traits<wchar_t> >&, std::__cxx11::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&) 00000000 W std::basic_istream<wchar_t, std::char_traits<wchar_t> >& std::operator>><wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >(std::basic_istream<wchar_t, std::char_traits<wchar_t> >&, std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >&)