From 8a38ebb653b75814bb3f1136ea3a0710855a6c60 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Wed, 13 Mar 2013 11:15:45 +0000 Subject: [PATCH] re PR libstdc++/56609 ([C++11] Several type traits give incorrect results for std::nullptr_t) 2013-03-13 Paolo Carlini PR libstdc++/56609 * include/std/type_traits (is_fundamental): Add std::nullptr_t. * testsuite/20_util/is_fundamental/value.cc: Extend. * testsuite/20_util/is_compound/value.cc: Likewise. From-SVN: r196630 --- libstdc++-v3/ChangeLog | 7 +++++++ libstdc++-v3/include/std/type_traits | 2 +- libstdc++-v3/testsuite/20_util/is_compound/value.cc | 3 +++ libstdc++-v3/testsuite/20_util/is_fundamental/value.cc | 3 +++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c3b4924485d..1a77fd6baf8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2013-03-13 Paolo Carlini + + PR libstdc++/56609 + * include/std/type_traits (is_fundamental): Add std::nullptr_t. + * testsuite/20_util/is_fundamental/value.cc: Extend. + * testsuite/20_util/is_compound/value.cc: Likewise. + 2013-03-09 Paolo Carlini * testsuite/20_util/function_objects/mem_fn/55463.cc: Avoid diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index 62d59128f9f..334b8d0ab38 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -444,7 +444,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// is_fundamental template struct is_fundamental - : public __or_, is_void<_Tp>>::type + : public __or_, is_void<_Tp>, __is_nullptr_t<_Tp>>::type { }; /// is_object diff --git a/libstdc++-v3/testsuite/20_util/is_compound/value.cc b/libstdc++-v3/testsuite/20_util/is_compound/value.cc index 20affbf21f4..936b7366663 100644 --- a/libstdc++-v3/testsuite/20_util/is_compound/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_compound/value.cc @@ -46,6 +46,9 @@ void test01() VERIFY( (test_category(false)) ); VERIFY( (test_category(false)) ); + // libstdc++/56609 + VERIFY( (test_category(false)) ); + // Sanity check. VERIFY( (test_category(true)) ); } diff --git a/libstdc++-v3/testsuite/20_util/is_fundamental/value.cc b/libstdc++-v3/testsuite/20_util/is_fundamental/value.cc index da63d6042a3..00fa8822d38 100644 --- a/libstdc++-v3/testsuite/20_util/is_fundamental/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_fundamental/value.cc @@ -46,6 +46,9 @@ void test01() VERIFY( (test_category(true)) ); VERIFY( (test_category(true)) ); + // libstdc++/56609 + VERIFY( (test_category(true)) ); + // Sanity check. VERIFY( (test_category(false)) ); }