aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2010-03-22 12:18:46 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2010-03-22 12:18:46 +0000
commit2305a1e82e8bd6498fd2c01ffb71ba597e218d0a (patch)
treef0e4822f6f1f41d71ebb9b4543cd32fa04743624
parentbe36dd859d8f539adea5968c6423b6d062700038 (diff)
downloadgcc-2305a1e82e8bd6498fd2c01ffb71ba597e218d0a.zip
gcc-2305a1e82e8bd6498fd2c01ffb71ba597e218d0a.tar.gz
gcc-2305a1e82e8bd6498fd2c01ffb71ba597e218d0a.tar.bz2
base.h (_Less): Use std::less.
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. From-SVN: r157622
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/include/parallel/base.h55
-rw-r--r--libstdc++-v3/include/parallel/numeric4
3 files changed, 25 insertions, 41 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 7cb2c1d..59c5a8e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -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.
diff --git a/libstdc++-v3/include/parallel/base.h b/libstdc++-v3/include/parallel/base.h
index 76c3fe6..6656b2c 100644
--- a/libstdc++-v3/include/parallel/base.h
+++ b/libstdc++-v3/include/parallel/base.h
@@ -262,63 +262,40 @@ namespace __gnu_parallel
// Partial specialization for one type. Same as std::less.
template<typename _Tp>
- struct _Less<_Tp, _Tp> : public std::binary_function<_Tp, _Tp, bool>
- {
- bool
- operator()(const _Tp& __x, const _Tp& __y) const
- { return __x < __y; }
- };
-
+ struct _Less<_Tp, _Tp>
+ : public std::less<_Tp> { };
/** @brief Similar to std::plus, but allows two different types. */
- template<typename _Tp1, typename _Tp2>
- struct _Plus : public std::binary_function<_Tp1, _Tp2, _Tp1>
+ template<typename _Tp1, typename _Tp2, typename _Result
+ = __typeof__(*static_cast<_Tp1*>(NULL)
+ + *static_cast<_Tp2*>(NULL))>
+ struct _Plus : public std::binary_function<_Tp1, _Tp2, _Result>
{
- typedef __typeof__(*static_cast<_Tp1*>(NULL)
- + *static_cast<_Tp2*>(NULL)) __result;
-
- __result
+ _Result
operator()(const _Tp1& __x, const _Tp2& __y) const
{ return __x + __y; }
};
// Partial specialization for one type. Same as std::plus.
template<typename _Tp>
- struct _Plus<_Tp, _Tp> : public std::binary_function<_Tp, _Tp, _Tp>
- {
- typedef __typeof__(*static_cast<_Tp*>(NULL)
- + *static_cast<_Tp*>(NULL)) __result;
-
- __result
- operator()(const _Tp& __x, const _Tp& __y) const
- { return __x + __y; }
- };
-
+ struct _Plus<_Tp, _Tp, _Tp>
+ : public std::plus<_Tp> { };
/** @brief Similar to std::multiplies, but allows two different types. */
- template<typename _Tp1, typename _Tp2>
- struct _Multiplies : public std::binary_function<_Tp1, _Tp2, _Tp1>
+ template<typename _Tp1, typename _Tp2, typename _Result
+ = __typeof__(*static_cast<_Tp1*>(NULL)
+ * *static_cast<_Tp2*>(NULL))>
+ struct _Multiplies : public std::binary_function<_Tp1, _Tp2, _Result>
{
- typedef __typeof__(*static_cast<_Tp1*>(NULL)
- * *static_cast<_Tp2*>(NULL)) __result;
-
- __result
+ _Result
operator()(const _Tp1& __x, const _Tp2& __y) const
{ return __x * __y; }
};
// Partial specialization for one type. Same as std::multiplies.
template<typename _Tp>
- struct _Multiplies<_Tp, _Tp> : public std::binary_function<_Tp, _Tp, _Tp>
- {
- typedef __typeof__(*static_cast<_Tp*>(NULL)
- * *static_cast<_Tp*>(NULL)) __result;
-
- __result
- operator()(const _Tp& __x, const _Tp& __y) const
- { return __x * __y; }
- };
-
+ struct _Multiplies<_Tp, _Tp, _Tp>
+ : public std::multiplies<_Tp> { };
template<typename _Tp, typename _DifferenceTp>
class _PseudoSequence;
diff --git a/libstdc++-v3/include/parallel/numeric b/libstdc++-v3/include/parallel/numeric
index eff597e..76916ff 100644
--- a/libstdc++-v3/include/parallel/numeric
+++ b/libstdc++-v3/include/parallel/numeric
@@ -281,7 +281,7 @@ namespace __parallel
typedef typename _TraitsType2::value_type _ValueType2;
typedef typename
- __gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::__result
+ __gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::result_type
_MultipliesResultType;
return inner_product(__first1, __last1, __first2, __init,
__gnu_parallel::_Plus<_Tp, _MultipliesResultType>(),
@@ -301,7 +301,7 @@ namespace __parallel
typedef typename _TraitsType2::value_type _ValueType2;
typedef typename
- __gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::__result
+ __gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::result_type
_MultipliesResultType;
return inner_product(__first1, __last1, __first2, __init,
__gnu_parallel::_Plus<_Tp, _MultipliesResultType>(),