diff options
author | Daniel Frey <d.frey@gmx.de> | 2010-01-26 13:33:06 +0000 |
---|---|---|
committer | Paolo Carlini <paolo.carlini@oracle.com> | 2010-01-26 13:33:06 +0000 |
commit | a2a2a12e1223ad917631260906da91af8d6aef23 (patch) | |
tree | 4c62d2fc3e5b5d6646ef9814fa0edcc637d56e81 | |
parent | fc3547cb9b84e009d063b63507ce050dc5b61f4e (diff) |
2010-01-26 Daniel Frey <d.frey@gmx.de>
* include/std/functional: Use enable_if instead of __enable_if
throughout, do not include ext/type_traits.h.
(is_placeholder, is_bind_expression): Use integral_constant.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@156246 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/std/functional | 50 |
2 files changed, 23 insertions, 33 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index e152d2ca1cc..a0d319720f8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2010-01-26 Daniel Frey <d.frey@gmx.de> + + * include/std/functional: Use enable_if instead of __enable_if + throughout, do not include ext/type_traits.h. + (is_placeholder, is_bind_expression): Use integral_constant. + 2010-01-25 Paolo Carlini <paolo.carlini@oracle.com> * testsuite/util/testsuite_common_types.h (has_bitwise_operators): diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional index 68b78423366..29b19f67d0f 100644 --- a/libstdc++-v3/include/std/functional +++ b/libstdc++-v3/include/std/functional @@ -56,7 +56,6 @@ #include <tuple> #include <type_traits> #include <bits/functional_hash.h> -#include <ext/type_traits.h> namespace std { @@ -234,12 +233,12 @@ namespace std */ template<typename _Functor, typename... _Args> inline - typename __gnu_cxx::__enable_if< + typename enable_if< (!is_member_pointer<_Functor>::value && !is_function<_Functor>::value && !is_function<typename remove_pointer<_Functor>::type>::value), typename result_of<_Functor(_Args...)>::type - >::__type + >::type __invoke(_Functor& __f, _Args&&... __args) { return __f(std::forward<_Args>(__args)...); @@ -248,11 +247,11 @@ namespace std // To pick up function references (that will become function pointers) template<typename _Functor, typename... _Args> inline - typename __gnu_cxx::__enable_if< + typename enable_if< (is_pointer<_Functor>::value && is_function<typename remove_pointer<_Functor>::type>::value), typename result_of<_Functor(_Args...)>::type - >::__type + >::type __invoke(_Functor __f, _Args&&... __args) { return __f(std::forward<_Args>(__args)...); @@ -769,10 +768,7 @@ namespace std */ template<typename _Tp> struct is_bind_expression - { static const bool value = false; }; - - template<typename _Tp> - const bool is_bind_expression<_Tp>::value; + : public false_type { }; /** * @brief Determines if the given type _Tp is a placeholder in a @@ -780,10 +776,8 @@ namespace std */ template<typename _Tp> struct is_placeholder - { static const int value = 0; }; - - template<typename _Tp> - const int is_placeholder<_Tp>::value; + : public integral_constant<int, 0> + { }; /// The type of placeholder objects defined by libstdc++. template<int _Num> struct _Placeholder { }; @@ -837,10 +831,8 @@ namespace std */ template<int _Num> struct is_placeholder<_Placeholder<_Num> > - { static const int value = _Num; }; - - template<int _Num> - const int is_placeholder<_Placeholder<_Num> >::value; + : public integral_constant<int, _Num> + { }; /** * Stores a tuple of indices. Used by bind() to extract the elements @@ -1346,18 +1338,12 @@ namespace std /// Class template _Bind is always a bind expression. template<typename _Signature> struct is_bind_expression<_Bind<_Signature> > - { static const bool value = true; }; - - template<typename _Signature> - const bool is_bind_expression<_Bind<_Signature> >::value; + : public true_type { }; /// Class template _Bind_result is always a bind expression. template<typename _Result, typename _Signature> struct is_bind_expression<_Bind_result<_Result, _Signature> > - { static const bool value = true; }; - - template<typename _Result, typename _Signature> - const bool is_bind_expression<_Bind_result<_Result, _Signature> >::value; + : public true_type { }; /// bind template<typename _Functor, typename... _ArgTypes> @@ -1850,8 +1836,8 @@ namespace std */ template<typename _Functor> function(_Functor __f, - typename __gnu_cxx::__enable_if< - !is_integral<_Functor>::value, _Useless>::__type + typename enable_if< + !is_integral<_Functor>::value, _Useless>::type = _Useless()); /** @@ -1927,8 +1913,7 @@ namespace std * reference_wrapper<F>, this function will not throw. */ template<typename _Functor> - typename __gnu_cxx::__enable_if<!is_integral<_Functor>::value, - function&>::__type + typename enable_if<!is_integral<_Functor>::value, function&>::type operator=(_Functor&& __f) { function(std::forward<_Functor>(__f)).swap(*this); @@ -1937,8 +1922,7 @@ namespace std /// @overload template<typename _Functor> - typename __gnu_cxx::__enable_if<!is_integral<_Functor>::value, - function&>::__type + typename enable_if<!is_integral<_Functor>::value, function&>::type operator=(reference_wrapper<_Functor> __f) { function(__f).swap(*this); @@ -2059,8 +2043,8 @@ namespace std template<typename _Functor> function<_Res(_ArgTypes...)>:: function(_Functor __f, - typename __gnu_cxx::__enable_if< - !is_integral<_Functor>::value, _Useless>::__type) + typename enable_if< + !is_integral<_Functor>::value, _Useless>::type) : _Function_base() { typedef _Function_handler<_Signature_type, _Functor> _My_handler; |