diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-11-30 12:52:38 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-11-30 12:52:38 +0000 |
commit | d49765eea5697012b4ab2793d3a7f7ea3d5582b5 (patch) | |
tree | a2c0217a08ff8f46000d2143a910bf8fc98e874d /libstdc++-v3/include/std/type_traits | |
parent | 92468061410e9b914fc7459cade381cba5124476 (diff) | |
download | ppe42-gcc-d49765eea5697012b4ab2793d3a7f7ea3d5582b5.tar.gz ppe42-gcc-d49765eea5697012b4ab2793d3a7f7ea3d5582b5.zip |
2010-11-30 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/46718
* include/std/type_traits (__is_nullptr_t): Add.
(is_scalar): Use the latter.
* testsuite/20_util/is_scalar/value.cc: New.
* testsuite/20_util/is_scalar/requirements/typedefs.cc: Likewise.
* testsuite/20_util/is_scalar/requirements/explicit_instantiation.cc:
Likewise.
* testsuite/20_util/make_signed/requirements/typedefs_neg.cc:
Adjust dg-error line numbers.
* testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc:
Likewise.
* testsuite/20_util/declval/requirements/1_neg.cc: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@167294 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include/std/type_traits')
-rw-r--r-- | libstdc++-v3/include/std/type_traits | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index fe84a6f92ac..8f5b5c993e2 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -250,6 +250,18 @@ _GLIBCXX_BEGIN_NAMESPACE(std) struct is_function<_Res(_ArgTypes......) const volatile> : public true_type { }; + template<typename> + struct __is_nullptr_t_helper + : public false_type { }; + _DEFINE_SPEC(0, __is_nullptr_t_helper, std::nullptr_t, true) + + // __is_nullptr_t (extension). + template<typename _Tp> + struct __is_nullptr_t + : public integral_constant<bool, (__is_nullptr_t_helper<typename + remove_cv<_Tp>::type>::value)> + { }; + // composite type traits. /// is_arithmetic @@ -284,7 +296,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) : public integral_constant<bool, (is_arithmetic<_Tp>::value || is_enum<_Tp>::value || is_pointer<_Tp>::value - || is_member_pointer<_Tp>::value)> + || is_member_pointer<_Tp>::value + || __is_nullptr_t<_Tp>::value)> { }; /// is_compound |