diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 99d37d1fa6621455a49f1f1ef341e2e2d6d04d30..121ac771e64d8c9aed5ca8ff85bf2170deabb9f4 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,14 @@
+2015-01-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+	PR libstdc++/64422
+	* src/c++98/misc-inst.cc (string::erase): Add missing overloads.
+	(string::insert): Likewise.
+	(string::replace): Likewise.
+	(wstring::erase): Likewise.
+	(wstring::insert): Likewise.
+	(wstring::replace): Likewise.
+	* testsuite/21_strings/basic_string/modifiers/64422.cc: New testcase.
+
 2015-01-02  Jonathan Wakely  <jwakely@redhat.com>
 
 	PR libstdc++/64468
diff --git a/libstdc++-v3/src/c++98/misc-inst.cc b/libstdc++-v3/src/c++98/misc-inst.cc
index 989218f6e7ed8e1f72581f32e69828a42ed79e85..060dac2835282c0771ce391ce6ab96cae8ccfc68 100644
--- a/libstdc++-v3/src/c++98/misc-inst.cc
+++ b/libstdc++-v3/src/c++98/misc-inst.cc
@@ -68,20 +68,36 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
   // 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);
 
 #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);
diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/64422.cc b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/64422.cc
new file mode 100644
index 0000000000000000000000000000000000000000..4b37ba97f1709423e2bdd140554e9600efb66a2e
--- /dev/null
+++ b/libstdc++-v3/testsuite/21_strings/basic_string/modifiers/64422.cc
@@ -0,0 +1,49 @@
+// 2015-01-02  Bernd Edlinger  <bernd.edlinger@hotmail.de>
+
+// Copyright (C) 2005-2015 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library.  This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 3, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING3.  If not see
+// <http://www.gnu.org/licenses/>.
+
+/* { dg-do link } */
+/* { dg-options "-O0" } */
+
+#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;
+}