diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2010-03-23 15:03:50 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2010-03-23 15:03:50 +0000 |
commit | e0e3300cb12b24ae1c2898c7253bb3d80f30d419 (patch) | |
tree | a70515e673fdee206e3db91b193c61b14845df37 | |
parent | d85b51449bb71a8366587f484e02b74bb9038114 (diff) | |
download | gcc-e0e3300cb12b24ae1c2898c7253bb3d80f30d419.zip gcc-e0e3300cb12b24ae1c2898c7253bb3d80f30d419.tar.gz gcc-e0e3300cb12b24ae1c2898c7253bb3d80f30d419.tar.bz2 |
value.cc: New.
2010-03-23 Paolo Carlini <paolo.carlini@oracle.com>
* testsuite/20_util/is_trivial/value.cc: New.
* testsuite/20_util/is_standard_layout/value.cc: Likewise.
* testsuite/20_util/is_pod/value.cc: Extend.
From-SVN: r157671
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/is_pod/value.cc | 32 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/is_standard_layout/value.cc | 70 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/is_trivial/value.cc | 70 |
4 files changed, 178 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 0fbab92..35da60f 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,11 @@ 2010-03-23 Paolo Carlini <paolo.carlini@oracle.com> + * testsuite/20_util/is_trivial/value.cc: New. + * testsuite/20_util/is_standard_layout/value.cc: Likewise. + * testsuite/20_util/is_pod/value.cc: Extend. + +2010-03-23 Paolo Carlini <paolo.carlini@oracle.com> + * include/bits/stl_algobase.h (lower_bound(_ForwardIterator, _ForwardIterator, const _Tp&, _Compare)): Move... * include/bits/stl_algo.h: ... here. diff --git a/libstdc++-v3/testsuite/20_util/is_pod/value.cc b/libstdc++-v3/testsuite/20_util/is_pod/value.cc index 055a41c..6f3d109 100644 --- a/libstdc++-v3/testsuite/20_util/is_pod/value.cc +++ b/libstdc++-v3/testsuite/20_util/is_pod/value.cc @@ -22,6 +22,34 @@ #include <testsuite_hooks.h> #include <testsuite_tr1.h> +struct NType // neither trivial nor standard-layout +{ + int i; + int j; + virtual ~NType(); +}; + +struct TType // trivial but not standard-layout +{ + int i; + +private: + int j; +}; + +struct SLType // standard-layout but not trivial +{ + int i; + int j; + ~SLType(); +}; + +struct PODType // both trivial and standard-layout +{ + int i; + int j; +}; + void test01() { bool test __attribute__((unused)) = true; @@ -43,8 +71,12 @@ void test01() VERIFY( (test_category<is_pod, int (ClassType::*[2][3])>(true)) ); VERIFY( (test_category<is_pod, int (ClassType::*[][2][3]) (int)>(true)) ); VERIFY( (test_category<is_pod, ClassType>(true)) ); + VERIFY( (test_category<is_pod, PODType>(true)) ); VERIFY( (test_category<is_pod, void>(false)) ); + VERIFY( (test_category<is_pod, NType>(false)) ); + VERIFY( (test_category<is_pod, TType>(false)) ); + VERIFY( (test_category<is_pod, SLType>(false)) ); } int main() diff --git a/libstdc++-v3/testsuite/20_util/is_standard_layout/value.cc b/libstdc++-v3/testsuite/20_util/is_standard_layout/value.cc new file mode 100644 index 0000000..dbbb7fa --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/is_standard_layout/value.cc @@ -0,0 +1,70 @@ +// { dg-options "-std=gnu++0x" } +// 2010-03-23 Paolo Carlini <paolo.carlini@oracle.com> +// +// Copyright (C) 2010 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <type_traits> +#include <testsuite_hooks.h> +#include <testsuite_tr1.h> + +struct NType // neither trivial nor standard-layout +{ + int i; + int j; + virtual ~NType(); +}; + +struct TType // trivial but not standard-layout +{ + int i; + +private: + int j; +}; + +struct SLType // standard-layout but not trivial +{ + int i; + int j; + ~SLType(); +}; + +struct PODType // both trivial and standard-layout +{ + int i; + int j; +}; + +void test01() +{ + bool test __attribute__((unused)) = true; + using std::is_standard_layout; + using namespace __gnu_test; + + VERIFY( (test_category<is_standard_layout, SLType>(true)) ); + VERIFY( (test_category<is_standard_layout, PODType>(true)) ); + + VERIFY( (test_category<is_standard_layout, NType>(false)) ); + VERIFY( (test_category<is_standard_layout, TType>(false)) ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/20_util/is_trivial/value.cc b/libstdc++-v3/testsuite/20_util/is_trivial/value.cc new file mode 100644 index 0000000..2024e8e --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/is_trivial/value.cc @@ -0,0 +1,70 @@ +// { dg-options "-std=gnu++0x" } +// 2010-03-23 Paolo Carlini <paolo.carlini@oracle.com> +// +// Copyright (C) 2010 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <type_traits> +#include <testsuite_hooks.h> +#include <testsuite_tr1.h> + +struct NType // neither trivial nor standard-layout +{ + int i; + int j; + virtual ~NType(); +}; + +struct TType // trivial but not standard-layout +{ + int i; + +private: + int j; +}; + +struct SLType // standard-layout but not trivial +{ + int i; + int j; + ~SLType(); +}; + +struct PODType // both trivial and standard-layout +{ + int i; + int j; +}; + +void test01() +{ + bool test __attribute__((unused)) = true; + using std::is_trivial; + using namespace __gnu_test; + + VERIFY( (test_category<is_trivial, TType>(true)) ); + VERIFY( (test_category<is_trivial, PODType>(true)) ); + + VERIFY( (test_category<is_trivial, NType>(false)) ); + VERIFY( (test_category<is_trivial, SLType>(false)) ); +} + +int main() +{ + test01(); + return 0; +} |