Index: libstdc++-v3/src/c++98/misc-inst.cc
===================================================================
--- libstdc++-v3/src/c++98/misc-inst.cc	(revision 219088)
+++ libstdc++-v3/src/c++98/misc-inst.cc	(working copy)
@@ -68,10 +68,18 @@
   // C++98 members that are not instantiated by src/c++11/string-inst.cc
   // because they changed in C++11 to take const_iterator parameters.
   template string::iterator string::erase(iterator);
+  template string::iterator string::erase(iterator, iterator);
+  template void string::insert(iterator, size_type, char);
   template void string::insert(iterator, iterator, iterator);
   template string::iterator string::insert(iterator, char);
+  template string& string::replace(iterator, iterator, const string&);
+  template string&
+  string::replace(iterator, iterator, const char*, size_type);
+  template string& string::replace(iterator, iterator, const char*);
   template string& string::replace(iterator, iterator, size_type, char);
   template string& string::replace(iterator, iterator, char*, char*);
+  template string&
+  string::replace(iterator, iterator, const char*, const char*);
   template string& string::replace(iterator, iterator, iterator, iterator);
   template string&
   string::replace(iterator, iterator, const_iterator, const_iterator);
@@ -78,10 +86,18 @@
 
 #ifdef _GLIBCXX_USE_WCHAR_T
   template wstring::iterator wstring::erase(iterator);
+  template wstring::iterator wstring::erase(iterator, iterator);
+  template void wstring::insert(iterator, size_type, wchar_t);
   template void wstring::insert(iterator, iterator, iterator);
   template wstring::iterator wstring::insert(iterator, wchar_t);
+  template wstring& wstring::replace(iterator, iterator, const wstring&);
+  template wstring&
+  wstring::replace(iterator, iterator, const wchar_t*, size_type);
+  template wstring& wstring::replace(iterator, iterator, const wchar_t*);
   template wstring& wstring::replace(iterator, iterator, size_type, wchar_t);
   template wstring& wstring::replace(iterator, iterator, wchar_t*, wchar_t*);
+  template wstring&
+  wstring::replace(iterator, iterator, const wchar_t*, const wchar_t*);
   template wstring& wstring::replace(iterator, iterator, iterator, iterator);
   template wstring&
   wstring::replace(iterator, iterator, const_iterator, const_iterator);
Index: gcc/testsuite/g++.dg/pr64422.C
===================================================================
--- gcc/testsuite/g++.dg/pr64422.C	(revision 0)
+++ gcc/testsuite/g++.dg/pr64422.C	(working copy)
@@ -0,0 +1,28 @@
+/* { dg-do run } */
+#include <string>
+
+int
+main ()
+{
+  std::string x;
+  x.insert (x.begin (), 10, 'x');
+  const char test[] = "test";
+  x.replace (x.begin (), x.end (), test, 4);
+  x.replace (x.begin (), x.end (), test);
+  char best[] = "best";
+  x.replace (x.begin (), x.end (), best, best + 4);
+  x.replace (x.begin (), x.end (), x);
+  x.erase (x.begin (), x.end ());
+#ifdef _GLIBCXX_USE_WCHAR_T
+  std::wstring w;
+  w.insert (w.begin (), 10, L'x');
+  const wchar_t west[] = L"west";
+  w.replace (w.begin (), w.end (), west, 4);
+  w.replace (w.begin (), w.end (), west);
+  wchar_t rest[] = L"rest";
+  w.replace (w.begin (), w.end (), rest, rest + 4);
+  w.replace (w.begin (), w.end (), w);
+  w.erase (w.begin (), w.end ());
+#endif
+  return 0;
+}
