summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/include/std/type_traits
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-30 12:52:38 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2010-11-30 12:52:38 +0000
commitd49765eea5697012b4ab2793d3a7f7ea3d5582b5 (patch)
treea2c0217a08ff8f46000d2143a910bf8fc98e874d /libstdc++-v3/include/std/type_traits
parent92468061410e9b914fc7459cade381cba5124476 (diff)
downloadppe42-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_traits15
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
OpenPOWER on IntegriCloud