From 405559c419b109795786dc7aedd8d39539c35a37 Mon Sep 17 00:00:00 2001 From: paolo Date: Thu, 2 May 2013 12:03:30 +0000 Subject: [PATCH] 2013-05-02 Paolo Carlini * 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 --- libstdc++-v3/ChangeLog | 16 ++++++++ .../integral_constant/operator_value_type.cc | 36 ++++++++++++++++++ .../requirements/constexpr_data.cc | 4 +- .../requirements/explicit_instantiation.cc | 29 ++++++++++++++ .../integral_constant/requirements/typedefs.cc | 35 +++++++++++++++++ .../20_util/integral_constant/static_definition.cc | 34 +++++++++++++++++ .../integral_constant/true_false_type_typedefs.cc | 42 +++++++++++++++++++++ .../20_util/integral_constant/true_false_value.cc | 44 ++++++++++++++++++++++ 8 files changed, 238 insertions(+), 2 deletions(-) create mode 100644 libstdc++-v3/testsuite/20_util/integral_constant/operator_value_type.cc rename libstdc++-v3/testsuite/{tr1/4_metaprogramming => 20_util}/integral_constant/requirements/constexpr_data.cc (93%) create mode 100644 libstdc++-v3/testsuite/20_util/integral_constant/requirements/explicit_instantiation.cc create mode 100644 libstdc++-v3/testsuite/20_util/integral_constant/requirements/typedefs.cc create mode 100644 libstdc++-v3/testsuite/20_util/integral_constant/static_definition.cc create mode 100644 libstdc++-v3/testsuite/20_util/integral_constant/true_false_type_typedefs.cc create mode 100644 libstdc++-v3/testsuite/20_util/integral_constant/true_false_value.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b57163e..f9f0a82 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,21 @@ 2013-05-02 Paolo Carlini + * 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. + +2013-05-02 Paolo Carlini + * include/std/type_traits (is_null_pointer): Add. (__is_nullptr_t): Implement in terms of the latter. (is_fundamental, is_scalar): Adjust. 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 0000000..9072670 --- /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 +// . + +#include +#include //testsuite_hooks.h> + +typedef std::integral_constant ic_one; +typedef std::integral_constant ic_zero; +typedef std::integral_constant ic_minus_one; + +typedef std::integral_constant ic_true; +typedef std::integral_constant 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 similarity index 93% rename from libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/constexpr_data.cc rename to libstdc++-v3/testsuite/20_util/integral_constant/requirements/constexpr_data.cc index 135905f..f9271a6 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 0000000..fdd2294 --- /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 +// . + +// NB: This file is for testing type_traits with NO OTHER INCLUDES. + +#include + +namespace std +{ + typedef short test_type; + template struct integral_constant; +} 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 0000000..a72bfd9 --- /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 +// . + +// +// NB: This file is for testing type_traits with NO OTHER INCLUDES. + +#include + +// { dg-do compile } + +void test01() +{ + // Check for required typedefs + typedef std::integral_constant 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 0000000..09f6278 --- /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 +// . + +#include +#include + +void test01() +{ + bool test __attribute__((unused)) = true; + const bool* p = &std::integral_constant::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 0000000..83f0928 --- /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 +// . + +// +// NB: This file is for testing type_traits with NO OTHER INCLUDES. + +#include + +// { 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 0000000..aacf076 --- /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 +// . + +#include +#include + +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; +} -- 2.7.4