OSDN Git Service

2010-03-22 Paolo Carlini <paolo.carlini@oracle.com>
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 22 Mar 2010 12:18:46 +0000 (12:18 +0000)
committerMasaki Muranaka <monaka@monami-software.com>
Sun, 23 May 2010 00:31:57 +0000 (09:31 +0900)
* 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
libstdc++-v3/include/parallel/base.h

index 7cb2c1d..59c5a8e 100644 (file)
@@ -1,3 +1,10 @@
+2010-03-22  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       * 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  <paolo.carlini@oracle.com>
 
        * testsuite/17_intro/freestanding.cc: Avoid -Wall warnings.
index 1a8c3cb..6656b2c 100644 (file)
@@ -297,6 +297,9 @@ namespace __gnu_parallel
     struct _Multiplies<_Tp, _Tp, _Tp>
     : public std::multiplies<_Tp> { };
 
+  template<typename _Tp, typename _DifferenceTp>
+    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<typename _ValueTp>
+    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<typename _RAIter, typename _Compare>
     _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))