diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 4f9c8d08779a26c7f735b5fdd35ee8eeb025c7c1..a49240fa65ddd74be1ecba9891658b0e738e7467 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,9 @@
+2004-12-29  Jonathan Wakely  <redi@gcc.gnu.org>
+
+	* include/bits/vector.tcc (erase(iterator, iterator),
+	operator=, _M_assign_aux(_ForwardIterator, _ForwardIterator,
+	forward_iterator_tag)): Qualify all calls to std::copy().
+
 2004-12-29  Paolo Carlini  <pcarlini@suse.de>
 
 	Minimal fixes for -fno-exceptions.
diff --git a/libstdc++-v3/include/bits/vector.tcc b/libstdc++-v3/include/bits/vector.tcc
index 5dc3cd41eb3ce0f081091a8598297734b4544c2f..57144b073bb0daff6a1b3cb665541f10673b57d0 100644
--- a/libstdc++-v3/include/bits/vector.tcc
+++ b/libstdc++-v3/include/bits/vector.tcc
@@ -121,7 +121,7 @@ namespace _GLIBCXX_STD
     vector<_Tp, _Alloc>::
     erase(iterator __first, iterator __last)
     {
-      iterator __i(copy(__last, end(), __first));
+      iterator __i(std::copy(__last, end(), __first));
       std::_Destroy(__i, end(), this->get_allocator());
       this->_M_impl._M_finish = this->_M_impl._M_finish - (__last - __first);
       return __first;
@@ -149,7 +149,7 @@ namespace _GLIBCXX_STD
 	    }
 	  else if (size() >= __xlen)
 	    {
-	      iterator __i(copy(__x.begin(), __x.end(), begin()));
+	      iterator __i(std::copy(__x.begin(), __x.end(), begin()));
 	      std::_Destroy(__i, end(), this->get_allocator());
 	    }
 	  else
@@ -226,7 +226,7 @@ namespace _GLIBCXX_STD
 	  }
 	else if (size() >= __len)
 	  {
-	    iterator __new_finish(copy(__first, __last,
+	    iterator __new_finish(std::copy(__first, __last,
 				       this->_M_impl._M_start));
 	    std::_Destroy(__new_finish, end(), this->get_allocator());
 	    this->_M_impl._M_finish = __new_finish.base();