From c332713f1202d85690dae1363685143acc6da2da Mon Sep 17 00:00:00 2001 From: paolo Date: Mon, 22 Mar 2010 12:18:46 +0000 Subject: [PATCH] 2010-03-22 Paolo Carlini * include/parallel/base.h (_Less): Use std::less. (_Plus): Likewise use std::plus. (_Multiplies): Likewise use std::multiplies. * include/parallel/numeric: Adjust. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@157622 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 7 +++++++ libstdc++-v3/include/parallel/base.h | 26 +++++++++++++++++++------- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7cb2c1d5664..59c5a8e17e0 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2010-03-22 Paolo Carlini + + * include/parallel/base.h (_Less): Use std::less. + (_Plus): Likewise use std::plus. + (_Multiplies): Likewise use std::multiplies. + * include/parallel/numeric: Adjust. + 2010-03-19 Paolo Carlini * testsuite/17_intro/freestanding.cc: Avoid -Wall warnings. diff --git a/libstdc++-v3/include/parallel/base.h b/libstdc++-v3/include/parallel/base.h index 1a8c3cb60a8..6656b2caabb 100644 --- a/libstdc++-v3/include/parallel/base.h +++ b/libstdc++-v3/include/parallel/base.h @@ -297,6 +297,9 @@ namespace __gnu_parallel struct _Multiplies<_Tp, _Tp, _Tp> : public std::multiplies<_Tp> { }; + template + class _PseudoSequence; + /** @brief _Iterator associated with __gnu_parallel::_PseudoSequence. * If features the usual random-access iterator functionality. * @param _Tp Sequence _M_value type. @@ -308,6 +311,11 @@ namespace __gnu_parallel public: typedef _DifferenceTp _DifferenceType; + private: + const _Tp& _M_val; + _DifferenceType _M_pos; + + public: _PseudoSequenceIterator(const _Tp& __val, _DifferenceType __pos) : _M_val(__val), _M_pos(__pos) { } @@ -320,7 +328,7 @@ namespace __gnu_parallel } // Post-increment operator. - _PseudoSequenceIterator + const _PseudoSequenceIterator operator++(int) { return _PseudoSequenceIterator(_M_pos++); } @@ -336,17 +344,13 @@ namespace __gnu_parallel operator==(const _PseudoSequenceIterator& __i2) { return _M_pos == __i2._M_pos; } - bool + _DifferenceType operator!=(const _PseudoSequenceIterator& __i2) { return _M_pos != __i2._M_pos; } _DifferenceType operator-(const _PseudoSequenceIterator& __i2) { return _M_pos - __i2._M_pos; } - - private: - const _Tp& _M_val; - _DifferenceType _M_pos; }; /** @brief Sequence that conceptually consists of multiple copies of @@ -386,6 +390,14 @@ namespace __gnu_parallel _DifferenceType _M_count; }; + /** @brief Functor that does nothing */ + template + class _VoidFunctor + { + inline void + operator()(const _ValueTp& __v) const { } + }; + /** @brief Compute the median of three referenced elements, according to @c __comp. * @param __a First iterator. @@ -396,7 +408,7 @@ namespace __gnu_parallel template _RAIter __median_of_three_iterators(_RAIter __a, _RAIter __b, - _RAIter __c, _Compare __comp) + _RAIter __c, _Compare& __comp) { if (__comp(*__a, *__b)) if (__comp(*__b, *__c)) -- 2.11.0