diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2013-03-13 11:15:45 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2013-03-13 11:15:45 +0000 |
commit | 8a38ebb653b75814bb3f1136ea3a0710855a6c60 (patch) | |
tree | 4fa0415623ffea17fc5a15fb0cf02b13d5d0050f | |
parent | 1bfa59736afe6fb85586988b6d2175627d1e7708 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/std/type_traits | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/is_compound/value.cc | 3 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/is_fundamental/value.cc | 3 |
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)) ); } |