From: Paolo Carlini Date: Thu, 2 May 2013 12:03:30 +0000 (+0000) Subject: constexpr_data.cc: Move... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b273e79b19133a3b2098bac794c1da5c29809a09;p=gcc.git constexpr_data.cc: Move... 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. From-SVN: r198521 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b57163e5289..f9f0a82147f 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,19 @@ +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. 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 +// . + +#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/20_util/integral_constant/requirements/constexpr_data.cc b/libstdc++-v3/testsuite/20_util/integral_constant/requirements/constexpr_data.cc new file mode 100644 index 00000000000..f9271a67bc4 --- /dev/null +++ b/libstdc++-v3/testsuite/20_util/integral_constant/requirements/constexpr_data.cc @@ -0,0 +1,52 @@ +// { 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 + +namespace __gnu_test +{ + struct constexpr_member_data + { + template + void + operator()() + { + struct _Concept + { + void __constraint() + { + constexpr auto v __attribute__((unused)) (_Ttesttype::value); + } + }; + + _Concept c; + c.__constraint(); + } + }; +} + +int main() +{ + __gnu_test::constexpr_member_data test; + test.operator()>(); + test.operator()>(); + return 0; +} 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 +// . + +// 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 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 +// . + +// +// 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 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 +// . + +#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 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 +// . + +// +// 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 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 +// . + +#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; +} diff --git a/libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/constexpr_data.cc b/libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/constexpr_data.cc deleted file mode 100644 index 135905fa5a4..00000000000 --- a/libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/constexpr_data.cc +++ /dev/null @@ -1,52 +0,0 @@ -// { dg-do compile } -// { dg-options "-std=gnu++0x" } - -// Copyright (C) 2010-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 - -namespace __gnu_test -{ - struct constexpr_member_data - { - template - void - operator()() - { - struct _Concept - { - void __constraint() - { - constexpr auto v __attribute__((unused)) (_Ttesttype::value); - } - }; - - _Concept c; - c.__constraint(); - } - }; -} - -int main() -{ - __gnu_test::constexpr_member_data test; - test.operator()>(); - test.operator()>(); - return 0; -}