aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2013-03-13 11:15:45 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2013-03-13 11:15:45 +0000
commit8a38ebb653b75814bb3f1136ea3a0710855a6c60 (patch)
tree4fa0415623ffea17fc5a15fb0cf02b13d5d0050f
parent1bfa59736afe6fb85586988b6d2175627d1e7708 (diff)
downloadgcc-8a38ebb653b75814bb3f1136ea3a0710855a6c60.zip
gcc-8a38ebb653b75814bb3f1136ea3a0710855a6c60.tar.gz
gcc-8a38ebb653b75814bb3f1136ea3a0710855a6c60.tar.bz2
re PR libstdc++/56609 ([C++11] Several type traits give incorrect results for std::nullptr_t)
2013-03-13 Paolo Carlini <paolo.carlini@oracle.com> 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
-rw-r--r--libstdc++-v3/ChangeLog7
-rw-r--r--libstdc++-v3/include/std/type_traits2
-rw-r--r--libstdc++-v3/testsuite/20_util/is_compound/value.cc3
-rw-r--r--libstdc++-v3/testsuite/20_util/is_fundamental/value.cc3
4 files changed, 14 insertions, 1 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c3b4924..1a77fd6 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,10 @@
+2013-03-13 Paolo Carlini <paolo.carlini@oracle.com>
+
+ 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 <paolo.carlini@oracle.com>
* 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 62d5912..334b8d0 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<typename _Tp>
struct is_fundamental
- : public __or_<is_arithmetic<_Tp>, is_void<_Tp>>::type
+ : public __or_<is_arithmetic<_Tp>, 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 20affbf..936b736 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<is_compound, double>(false)) );
VERIFY( (test_category<is_compound, long double>(false)) );
+ // libstdc++/56609
+ VERIFY( (test_category<is_compound, std::nullptr_t>(false)) );
+
// Sanity check.
VERIFY( (test_category<is_compound, ClassType>(true)) );
}
diff --git a/libstdc++-v3/testsuite/20_util/is_fundamental/value.cc b/libstdc++-v3/testsuite/20_util/is_fundamental/value.cc
index da63d60..00fa882 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<is_fundamental, double>(true)) );
VERIFY( (test_category<is_fundamental, long double>(true)) );
+ // libstdc++/56609
+ VERIFY( (test_category<is_fundamental, std::nullptr_t>(true)) );
+
// Sanity check.
VERIFY( (test_category<is_fundamental, ClassType>(false)) );
}