diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 1b57aedc4e6a9b53ac0ad26b461979a31d74b6e4..b0dd29b737607b8e28f59b5fa0758412c9b26477 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2009-12-14  Paolo Carlini  <paolo.carlini@oracle.com>
+
+	PR libstdc++/25304, DR 865 [Ready]
+	* include/bits/stl_algobase.h (fill_n): Add comment about DR 865.
+	* include/bits/stl_algo.h (generate_n): Likewise.
+	* include/bits/algorithmfwd.h: Remove obsolete comment.
+	* doc/xml/manual/intro.xml: Add an entry for DR 865.
+
 2009-12-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
 	* configure.ac: Remove code to un-precious-ize CC, CXX,
diff --git a/libstdc++-v3/doc/xml/manual/intro.xml b/libstdc++-v3/doc/xml/manual/intro.xml
index 1c5e7f64e5572479ae4a8c2e8c02cb18088b420f..a3cdbdf1c46db4a8cc2f97c31872201496a0fa9e 100644
--- a/libstdc++-v3/doc/xml/manual/intro.xml
+++ b/libstdc++-v3/doc/xml/manual/intro.xml
@@ -815,6 +815,13 @@ requirements of the license of GCC.
     </term>
     <listitem><para>Update / add the signatures.
     </para></listitem></varlistentry>
+
+    <varlistentry><term><ulink url="../ext/lwg-active.html#865">865</ulink>:
+        <emphasis>More algorithms that throw away information</emphasis>
+    </term>
+    <listitem><para>The traditional HP / SGI return type and value is blessed
+                    by the resolution of the DR.
+    </para></listitem></varlistentry>
   </variablelist>
 
  </sect2>
diff --git a/libstdc++-v3/include/bits/algorithmfwd.h b/libstdc++-v3/include/bits/algorithmfwd.h
index e33a14c3bdcf16fca04cd372d3692abb17c7b769..7625ee4af5158eaaf81c4a1f363626d12736a55b 100644
--- a/libstdc++-v3/include/bits/algorithmfwd.h
+++ b/libstdc++-v3/include/bits/algorithmfwd.h
@@ -236,13 +236,6 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
     void 
     fill(_FIter, _FIter, const _Tp&);
 
-/*
-  XXX NB: return type different from ISO C++.
-  template<typename _OIter, typename _Size, typename _Tp>
-    void 
-    fill_n(_OIter, _Size, const _Tp&);
-*/
-
   template<typename _OIter, typename _Size, typename _Tp>
     _OIter
     fill_n(_OIter, _Size, const _Tp&);
@@ -620,13 +613,6 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
     void 
     generate(_FIter, _FIter, _Generator);
 
-/*
-  XXX NB: return type different from ISO C++.
-  template<typename _OIter, typename _Size, typename _Tp>
-    void
-    generate_n(_OIter, _Size, _Generator);
-*/
-
   template<typename _OIter, typename _Size, typename _Generator>
     _OIter
     generate_n(_OIter, _Size, _Generator);
diff --git a/libstdc++-v3/include/bits/stl_algo.h b/libstdc++-v3/include/bits/stl_algo.h
index 088414d097fef22431895a62a05eda5516615290..f6c98f8f59c96d41a5edde41d39cfee4115a0470 100644
--- a/libstdc++-v3/include/bits/stl_algo.h
+++ b/libstdc++-v3/include/bits/stl_algo.h
@@ -4921,6 +4921,9 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
    *
    *  Performs the assignment @c *i = @p gen() for each @c i in the range
    *  @p [first,first+n).
+   *
+   *  _GLIBCXX_RESOLVE_LIB_DEFECTS
+   *  DR 865. More algorithms that throw away information
   */
   template<typename _OutputIterator, typename _Size, typename _Generator>
     _OutputIterator
diff --git a/libstdc++-v3/include/bits/stl_algobase.h b/libstdc++-v3/include/bits/stl_algobase.h
index f9c3ab2b42885752c088a8b8d38f9edf76a0892d..bc04723439e5af9f783e3e72e03ee296c53bfd90 100644
--- a/libstdc++-v3/include/bits/stl_algobase.h
+++ b/libstdc++-v3/include/bits/stl_algobase.h
@@ -781,6 +781,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
    *  This function fills a range with copies of the same value.  For char
    *  types filling contiguous areas of memory, this becomes an inline call
    *  to @c memset or @ wmemset.
+   *
+   *  _GLIBCXX_RESOLVE_LIB_DEFECTS
+   *  DR 865. More algorithms that throw away information
   */
   template<typename _OI, typename _Size, typename _Tp>
     inline _OI