aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2009-12-11 17:54:37 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2009-12-11 17:54:37 +0000
commit8246b3148ea869d8f2cc2d420312feed719943db (patch)
tree28caefabc633e943e39366948da14657774645b2
parentf9679d8ae7199b2aba04614d7927a3dcd57c2bf3 (diff)
downloadgcc-8246b3148ea869d8f2cc2d420312feed719943db.zip
gcc-8246b3148ea869d8f2cc2d420312feed719943db.tar.gz
gcc-8246b3148ea869d8f2cc2d420312feed719943db.tar.bz2
PR libstdc++/22634, DR 539 [Ready]
2009-12-11 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/22634, DR 539 [Ready] * include/bits/stl_numeric.h (adjacent_difference): Use std::move at the end of the loop body, per the Ready resolution. * include/std/numeric: Do not include unnecessarily <cstddef>. * doc/xml/manual/intro.xml: Add an entry for DR 539. From-SVN: r155173
-rw-r--r--libstdc++-v3/ChangeLog8
-rw-r--r--libstdc++-v3/doc/xml/manual/intro.xml8
-rw-r--r--libstdc++-v3/include/bits/stl_numeric.h11
-rw-r--r--libstdc++-v3/include/std/numeric1
4 files changed, 25 insertions, 3 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 31224f3..68930ac 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,13 @@
2009-12-11 Paolo Carlini <paolo.carlini@oracle.com>
+ PR libstdc++/22634, DR 539 [Ready]
+ * include/bits/stl_numeric.h (adjacent_difference): Use std::move
+ at the end of the loop body, per the Ready resolution.
+ * include/std/numeric: Do not include unnecessarily <cstddef>.
+ * doc/xml/manual/intro.xml: Add an entry for DR 539.
+
+2009-12-11 Paolo Carlini <paolo.carlini@oracle.com>
+
* doc/html/ext/lwg-active.html: Update to Revision R68.
* doc/html/ext/lwg-closed.html: Likewise.
* doc/html/ext/lwg-defects.html: Likewise.
diff --git a/libstdc++-v3/doc/xml/manual/intro.xml b/libstdc++-v3/doc/xml/manual/intro.xml
index da06cd9..1c5e7f6 100644
--- a/libstdc++-v3/doc/xml/manual/intro.xml
+++ b/libstdc++-v3/doc/xml/manual/intro.xml
@@ -699,6 +699,14 @@ requirements of the license of GCC.
input_iterator' value_type.
</para></listitem></varlistentry>
+ <varlistentry><term><ulink url="../ext/lwg-active.html#539">539</ulink>:
+ <emphasis>partial_sum and adjacent_difference should mention
+ requirements</emphasis>
+ </term>
+ <listitem><para>We were almost doing the right thing, just use std::move
+ in adjacent_difference.
+ </para></listitem></varlistentry>
+
<varlistentry><term><ulink url="../ext/lwg-defects.html#541">541</ulink>:
<emphasis>shared_ptr template assignment and void</emphasis>
</term>
diff --git a/libstdc++-v3/include/bits/stl_numeric.h b/libstdc++-v3/include/bits/stl_numeric.h
index 5edf2bc..1adddf6 100644
--- a/libstdc++-v3/include/bits/stl_numeric.h
+++ b/libstdc++-v3/include/bits/stl_numeric.h
@@ -59,6 +59,7 @@
#include <bits/concept_check.h>
#include <debug/debug.h>
+#include <bits/move.h> // For _GLIBCXX_MOVE
#ifdef __GXX_EXPERIMENTAL_CXX0X__
@@ -302,6 +303,9 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param last End of input range.
* @param result Output to write sums to.
* @return Iterator pointing just beyond the values written to result.
+ *
+ * _GLIBCXX_RESOLVE_LIB_DEFECTS
+ * DR 539. partial_sum and adjacent_difference should mention requirements
*/
template<typename _InputIterator, typename _OutputIterator>
_OutputIterator
@@ -324,7 +328,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
{
_ValueType __tmp = *__first;
*++__result = __tmp - __value;
- __value = __tmp;
+ __value = _GLIBCXX_MOVE(__tmp);
}
return ++__result;
}
@@ -340,6 +344,9 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
* @param last End of input range.
* @param result Output to write sums to.
* @return Iterator pointing just beyond the values written to result.
+ *
+ * _GLIBCXX_RESOLVE_LIB_DEFECTS
+ * DR 539. partial_sum and adjacent_difference should mention requirements
*/
template<typename _InputIterator, typename _OutputIterator,
typename _BinaryOperation>
@@ -363,7 +370,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_P)
{
_ValueType __tmp = *__first;
*++__result = __binary_op(__tmp, __value);
- __value = __tmp;
+ __value = _GLIBCXX_MOVE(__tmp);
}
return ++__result;
}
diff --git a/libstdc++-v3/include/std/numeric b/libstdc++-v3/include/std/numeric
index 43d76d9..1acedf4 100644
--- a/libstdc++-v3/include/std/numeric
+++ b/libstdc++-v3/include/std/numeric
@@ -58,7 +58,6 @@
#pragma GCC system_header
#include <bits/c++config.h>
-#include <cstddef>
#include <bits/stl_iterator_base_types.h>
#include <bits/stl_numeric.h>