diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2010-03-22 12:18:46 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2010-03-22 12:18:46 +0000 |
commit | 2305a1e82e8bd6498fd2c01ffb71ba597e218d0a (patch) | |
tree | f0e4822f6f1f41d71ebb9b4543cd32fa04743624 | |
parent | be36dd859d8f539adea5968c6423b6d062700038 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/parallel/base.h | 55 | ||||
-rw-r--r-- | libstdc++-v3/include/parallel/numeric | 4 |
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>(), |