diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-05-02 12:03:30 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-05-02 12:03:30 +0000 |
commit | 405559c419b109795786dc7aedd8d39539c35a37 (patch) | |
tree | 7ca58b068fe96ad34f65996efe3582b97f46236e /libstdc++-v3/testsuite | |
parent | 27a38d4600925318f17cf440b74bb589bdc8070b (diff) | |
download | gcc-405559c419b109795786dc7aedd8d39539c35a37.tar.gz |
2013-05-02 Paolo Carlini <paolo.carlini@oracle.com>
* testsuite/tr1/4_metaprogramming/integral_constant/requirements/
constexpr_data.cc: Move...
* testsuite/20_util/integral_constant/requirements/constexpr_data.cc:
... here.
* testsuite/20_util/integral_constant/requirements/
explicit_instantiation.cc: New.
* testsuite/20_util/integral_constant/requirements/typedefs.cc:
Likewise.
* testsuite/20_util/integral_constant/static_definition.cc: Likewise.
* testsuite/20_util/integral_constant/true_false_type_typedefs.cc:
Likewise.
* testsuite/20_util/integral_constant/true_false_value.cc: Likewise.
* testsuite/20_util/integral_constant/operator_value_type.cc: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@198521 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/testsuite')
-rw-r--r-- | libstdc++-v3/testsuite/20_util/integral_constant/operator_value_type.cc | 36 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/integral_constant/requirements/constexpr_data.cc (renamed from libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/constexpr_data.cc) | 4 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/integral_constant/requirements/explicit_instantiation.cc | 29 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/integral_constant/requirements/typedefs.cc | 35 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/integral_constant/static_definition.cc | 34 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/integral_constant/true_false_type_typedefs.cc | 42 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/20_util/integral_constant/true_false_value.cc | 44 |
7 files changed, 222 insertions, 2 deletions
diff --git a/libstdc++-v3/testsuite/20_util/integral_constant/operator_value_type.cc b/libstdc++-v3/testsuite/20_util/integral_constant/operator_value_type.cc new file mode 100644 index 00000000000..907267069d2 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/integral_constant/operator_value_type.cc @@ -0,0 +1,36 @@ +// { dg-do compile } +// { dg-options "-std=gnu++11" } +// +// Copyright (C) 2013 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 <cassert> //testsuite_hooks.h> + +typedef std::integral_constant<int, 1> ic_one; +typedef std::integral_constant<int, 0> ic_zero; +typedef std::integral_constant<int, -1> ic_minus_one; + +typedef std::integral_constant<bool, true> ic_true; +typedef std::integral_constant<bool, false> ic_false; + +static_assert( ic_one() == 1, "" ); +static_assert( ic_zero() == 0, "" ); +static_assert( ic_minus_one() == -1, "" ); + +static_assert( ic_true() == true, "" ); +static_assert( ic_false() == false, "" ); diff --git a/libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/constexpr_data.cc b/libstdc++-v3/testsuite/20_util/integral_constant/requirements/constexpr_data.cc index 135905fa5a4..f9271a67bc4 100644 --- a/libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/constexpr_data.cc +++ b/libstdc++-v3/testsuite/20_util/integral_constant/requirements/constexpr_data.cc @@ -1,7 +1,7 @@ // { dg-do compile } -// { dg-options "-std=gnu++0x" } +// { dg-options "-std=gnu++11" } -// Copyright (C) 2010-2013 Free Software Foundation, Inc. +// Copyright (C) 2013 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 diff --git a/libstdc++-v3/testsuite/20_util/integral_constant/requirements/explicit_instantiation.cc b/libstdc++-v3/testsuite/20_util/integral_constant/requirements/explicit_instantiation.cc new file mode 100644 index 00000000000..fdd2294ce4e --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/integral_constant/requirements/explicit_instantiation.cc @@ -0,0 +1,29 @@ +// { dg-options "-std=gnu++11" } +// { dg-do compile } + +// Copyright (C) 2013 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/>. + +// NB: This file is for testing type_traits with NO OTHER INCLUDES. + +#include <type_traits> + +namespace std +{ + typedef short test_type; + template struct integral_constant<test_type, -3>; +} diff --git a/libstdc++-v3/testsuite/20_util/integral_constant/requirements/typedefs.cc b/libstdc++-v3/testsuite/20_util/integral_constant/requirements/typedefs.cc new file mode 100644 index 00000000000..a72bfd99d58 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/integral_constant/requirements/typedefs.cc @@ -0,0 +1,35 @@ +// { dg-options "-std=gnu++11" } +// +// Copyright (C) 2013 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/>. + +// +// NB: This file is for testing type_traits with NO OTHER INCLUDES. + +#include <type_traits> + +// { dg-do compile } + +void test01() +{ + // Check for required typedefs + typedef std::integral_constant<int, 1> test_type; + typedef test_type::value_type value_type; + typedef test_type::type type; + typedef test_type::type::value_type type_value_type; + typedef test_type::type::type type_type; +} diff --git a/libstdc++-v3/testsuite/20_util/integral_constant/static_definition.cc b/libstdc++-v3/testsuite/20_util/integral_constant/static_definition.cc new file mode 100644 index 00000000000..09f6278bc9b --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/integral_constant/static_definition.cc @@ -0,0 +1,34 @@ +// { dg-options "-std=gnu++11" } +// +// Copyright (C) 2013 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> + +void test01() +{ + bool test __attribute__((unused)) = true; + const bool* p = &std::integral_constant<bool, true>::value; + VERIFY( p ); +} + +int main() +{ + test01(); + return 0; +} diff --git a/libstdc++-v3/testsuite/20_util/integral_constant/true_false_type_typedefs.cc b/libstdc++-v3/testsuite/20_util/integral_constant/true_false_type_typedefs.cc new file mode 100644 index 00000000000..83f0928965a --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/integral_constant/true_false_type_typedefs.cc @@ -0,0 +1,42 @@ +// { dg-options "-std=gnu++11" } +// +// Copyright (C) 2013 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/>. + +// +// NB: This file is for testing type_traits with NO OTHER INCLUDES. + +#include <type_traits> + +// { dg-do compile } + +void test01() +{ + // Check for required typedefs + typedef std::true_type true_type; + typedef std::false_type false_type; + + typedef true_type::value_type true_value_type; + typedef true_type::type true_type; + typedef true_type::type::value_type true_type_value_type; + typedef true_type::type::type true_type_type; + + typedef false_type::value_type false_value_type; + typedef false_type::type false_type; + typedef false_type::type::value_type false_type_value_type; + typedef false_type::type::type false_type_type; +} diff --git a/libstdc++-v3/testsuite/20_util/integral_constant/true_false_value.cc b/libstdc++-v3/testsuite/20_util/integral_constant/true_false_value.cc new file mode 100644 index 00000000000..aacf0767f40 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/integral_constant/true_false_value.cc @@ -0,0 +1,44 @@ +// { dg-options "-std=gnu++11" } +// +// Copyright (C) 2013 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> + +void test01() +{ + bool test __attribute__((unused)) = true; + using std::true_type; + using std::false_type; + + static_assert( true_type::value == true, "" ); + static_assert( false_type::value == false, "" ); + static_assert( true_type::type::value == true, "" ); + static_assert( false_type::type::value == false, "" ); + + VERIFY( true_type::value == true ); + VERIFY( false_type::value == false ); + VERIFY( true_type::type::value == true ); + VERIFY( false_type::type::value == false ); +} + +int main() +{ + test01(); + return 0; +} |