aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Frey <d.frey@gmx.de>2010-01-26 13:33:06 +0000
committerPaolo Carlini <paolo.carlini@oracle.com>2010-01-26 13:33:06 +0000
commita2a2a12e1223ad917631260906da91af8d6aef23 (patch)
tree4c62d2fc3e5b5d6646ef9814fa0edcc637d56e81
parentfc3547cb9b84e009d063b63507ce050dc5b61f4e (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/ChangeLog6
-rw-r--r--libstdc++-v3/include/std/functional50
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;