diff options
-rw-r--r-- | libstdc++-v3/ChangeLog | 4 | ||||
-rw-r--r-- | libstdc++-v3/include/tr1/type_traits | 17 |
2 files changed, 17 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index e823fd8..b41ead4 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2005-01-28 Paolo Carlini <pcarlini@suse.de> + + * include/tr1/type_traits (is_function): Minor consistency tweaks. + 2005-01-28 Geoffrey Keating <geoffk@apple.com> * testsuite/lib/libstdc++.exp (libstdc++_init): Search the path diff --git a/libstdc++-v3/include/tr1/type_traits b/libstdc++-v3/include/tr1/type_traits index 7537229..12609dd 100644 --- a/libstdc++-v3/include/tr1/type_traits +++ b/libstdc++-v3/include/tr1/type_traits @@ -406,13 +406,22 @@ namespace tr1 struct is_enum : public integral_constant<bool, __is_enum_helper<_Tp>::__value> { }; + template<typename _Tp, bool = is_void<_Tp>::value> + struct __is_function_helper + { + static const bool __value = (__conv_helper<typename + add_reference<_Tp>::type, typename + add_pointer<_Tp>::type>::__value); + }; + + template<typename _Tp> + struct __is_function_helper<_Tp, true> + { static const bool __value = false; }; + template<typename _Tp> struct is_function - : public integral_constant<bool, - (__conv_helper<typename add_reference<_Tp>::type, - typename add_pointer<_Tp>::type>::__value)> + : public integral_constant<bool, __is_function_helper<_Tp>::__value> { }; - _DEFINE_SPEC(0, is_function, void, false) /// @brief composite type traits [4.5.2]. template<typename _Tp> |