From e894edefdb39ee5fc870680de8e7dea9147b3ce1 Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Tue, 30 Jan 2007 18:04:59 +0000 Subject: [PATCH] re PR libstdc++/30571 (Use of C++0x keywords in libstdc++-v3 headers) 2007-01-30 Benjamin Kosnik PR libstdc++/30571 * include/ext/pb_ds/detail/type_utils.hpp: Use C++0x static_assert if available, if not, centralize PB_DS_STATIC_ASSERT definition here. * include/ext/pb_ds/detail/resize_policy/ cc_hash_max_collision_check_resize_trigger_imp.hpp: Remove PB_DS_STATIC_ASSERT definition. * include/ext/pb_ds/detail/resize_policy/ hash_load_check_resize_trigger_imp.hpp: Same. * include/ext/pb_ds/detail/resize_policy/ hash_standard_resize_policy_imp.hpp: Same. * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Same. * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Same. * include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Same. * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Same. * include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Same. * include/ext/pb_ds/trie_policy.hpp: Same. * testsuite/util/performance/assoc/timing/ tree_order_statistics_test.hpp: Same. * testsuite/ext/pb_ds/example/hash_resize_neg.cc: Adjust line numbers. * testsuite/17_intro/headers_c++_c++0x_compat.cc: New. * include/precompiled/extc++.h: Update to current list of ext files. From-SVN: r121349 --- libstdc++-v3/ChangeLog | 26 ++++ .../detail/cc_hash_table_map_/cc_ht_map_.hpp | 7 +- .../detail/gp_hash_table_map_/gp_ht_map_.hpp | 7 +- .../detail/ov_tree_map_/node_iterators.hpp | 13 +- .../pb_ds/detail/pat_trie_/internal_node.hpp | 6 +- .../ext/pb_ds/detail/pat_trie_/pat_trie_.hpp | 7 +- ...max_collision_check_resize_trigger_imp.hpp | 6 +- .../hash_load_check_resize_trigger_imp.hpp | 7 +- .../hash_standard_resize_policy_imp.hpp | 7 +- .../include/ext/pb_ds/detail/type_utils.hpp | 18 ++- .../include/ext/pb_ds/trie_policy.hpp | 6 +- libstdc++-v3/include/precompiled/extc++.h | 7 +- .../17_intro/headers_c++_c++0x_compat.cc | 146 ++++++++++++++++++ .../ext/pb_ds/example/hash_resize_neg.cc | 4 +- .../timing/tree_order_statistics_test.hpp | 7 +- 15 files changed, 207 insertions(+), 67 deletions(-) create mode 100644 libstdc++-v3/testsuite/17_intro/headers_c++_c++0x_compat.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 215dfc82413..2b6b12000e3 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,29 @@ +2007-01-30 Benjamin Kosnik + + PR libstdc++/30571 + * include/ext/pb_ds/detail/type_utils.hpp: Use C++0x + static_assert if available, if not, centralize PB_DS_STATIC_ASSERT + definition here. + * include/ext/pb_ds/detail/resize_policy/ + cc_hash_max_collision_check_resize_trigger_imp.hpp: Remove + PB_DS_STATIC_ASSERT definition. + * include/ext/pb_ds/detail/resize_policy/ + hash_load_check_resize_trigger_imp.hpp: Same. + * include/ext/pb_ds/detail/resize_policy/ + hash_standard_resize_policy_imp.hpp: Same. + * include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp: Same. + * include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp: Same. + * include/ext/pb_ds/detail/pat_trie_/internal_node.hpp: Same. + * include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp: Same. + * include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp: Same. + * include/ext/pb_ds/trie_policy.hpp: Same. + * testsuite/util/performance/assoc/timing/ + tree_order_statistics_test.hpp: Same. + * testsuite/ext/pb_ds/example/hash_resize_neg.cc: Adjust line numbers. + * testsuite/17_intro/headers_c++_c++0x_compat.cc: New. + + * include/precompiled/extc++.h: Update to current list of ext files. + 2007-01-29 Paolo Carlini * include/bits/stl_uninitialized.h (uninitialized_copy(const char*, diff --git a/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp b/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp index c2b95e84ca7..67c35a63b69 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2007 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 @@ -106,10 +106,6 @@ namespace pb_ds #define PB_DS_V2S(X) Mapped_Data() #endif -#define PB_DS_STATIC_ASSERT(UNIQUE, E) \ - typedef static_assert_dumclass)> \ - UNIQUE##static_assert_type - // <011i$i0|\|-<|-|4i|\|i|\|g |-|4$|-| 74813. template)> \ - UNIQUE##static_assert_type - template)> \ - UNIQUE##static_assert_type -#define PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC \ +#define PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC \ ov_tree_node_const_it_ // Const node reference. @@ -205,7 +201,7 @@ namespace pb_ds const_metadata_pointer m_p_metadata; }; -#define PB_DS_OV_TREE_NODE_ITERATOR_C_DEC \ +#define PB_DS_OV_TREE_NODE_ITERATOR_C_DEC \ ov_tree_node_it_ // Node reference. @@ -251,7 +247,7 @@ namespace pb_ds public: inline - ov_tree_node_it_(const_pointer p_nd = NULL, const_pointer p_begin_nd = NULL, const_pointer p_end_nd = NULL, const_metadata_pointer p_metadata = NULL) : base_type( p_nd, p_begin_nd, p_end_nd, p_metadata) + ov_tree_node_it_(const_pointer p_nd = NULL, const_pointer p_begin_nd = NULL, const_pointer p_end_nd = NULL, const_metadata_pointer p_metadata = NULL) : base_type(p_nd, p_begin_nd, p_end_nd, p_metadata) { } // Access. @@ -295,7 +291,6 @@ namespace pb_ds #undef PB_DS_OV_TREE_NODE_ITERATOR_C_DEC #undef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC -#undef PB_DS_STATIC_ASSERT } // namespace detail } // namespace pb_ds diff --git a/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp b/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp index 1061988c327..902c9b7ca53 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2007 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 @@ -66,9 +66,6 @@ namespace pb_ds #define PB_DS_LEAF_C_DEC \ pat_trie_leaf -#define PB_DS_STATIC_ASSERT(UNIQUE, E) \ - typedef static_assert_dumclass)> UNIQUE##static_assert_type - templatem_value.first) #endif -#define PB_DS_STATIC_ASSERT(UNIQUE, E) \ - typedef static_assert_dumclass)> \ - UNIQUE##static_assert_type - /** * class description = PATRICIA trie implementation."> **/ @@ -520,7 +516,6 @@ namespace pb_ds #undef PB_DS_V2F #undef PB_DS_EP2VP #undef PB_DS_V2S -#undef PB_DS_STATIC_ASSERT } // namespace detail } // namespace pb_ds diff --git a/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp b/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp index c10f7b6cc59..3ade0c7e16c 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2007 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 @@ -44,9 +44,6 @@ * Contains a resize trigger implementation. */ -#define PB_DS_STATIC_ASSERT(UNIQUE, E) \ - typedef detail::static_assert_dumclass)> UNIQUE##static_assert_type - PB_DS_CLASS_T_DEC PB_DS_CLASS_C_DEC:: cc_hash_max_collision_check_resize_trigger(float load) : @@ -218,4 +215,3 @@ set_load(float load) calc_resize_needed(); } -#undef PB_DS_STATIC_ASSERT diff --git a/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp b/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp index f3c597f9340..1bae0192577 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2007 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 @@ -44,9 +44,6 @@ * Contains a resize trigger implementation. */ -#define PB_DS_STATIC_ASSERT(UNIQUE, E) \ - typedef detail::static_assert_dumclass)> UNIQUE##static_assert_type - PB_DS_CLASS_T_DEC PB_DS_CLASS_C_DEC:: hash_load_check_resize_trigger(float load_min, float load_max) @@ -296,5 +293,3 @@ assert_valid() const } #endif -#undef PB_DS_STATIC_ASSERT - diff --git a/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp b/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp index b8489915c84..a37ccc0be9e 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2007 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 @@ -44,9 +44,6 @@ * Contains a resize policy implementation. */ -#define PB_DS_STATIC_ASSERT(UNIQUE, E) \ - typedef detail::static_assert_dumclass)> UNIQUE##static_assert_type - PB_DS_CLASS_T_DEC PB_DS_CLASS_C_DEC:: hash_standard_resize_policy() @@ -256,5 +253,3 @@ PB_DS_CLASS_C_DEC:: get_size_policy() const { return *this; } -#undef PB_DS_STATIC_ASSERT - diff --git a/libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp b/libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp index d66f01c2701..7a7e425a0ec 100644 --- a/libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp +++ b/libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2007 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 @@ -136,16 +136,19 @@ namespace pb_ds }; }; - + // Use C++0x's static_assert if possible. +#ifdef __GXX_EXPERIMENTAL_CXX0X__ +#define PB_DS_STATIC_ASSERT(UNIQUE, E) static_assert(E, #UNIQUE) +#else template - struct static_assert; + struct __static_assert; template<> - struct static_assert + struct __static_assert { }; template - struct static_assert_dumclass + struct __static_assert_dumclass { enum { @@ -153,6 +156,11 @@ namespace pb_ds }; }; +#define PB_DS_STATIC_ASSERT(UNIQUE, E) \ + typedef pb_ds::detail::__static_assert_dumclass)> UNIQUE##__static_assert_type + +#endif + template struct type_to_type { diff --git a/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp b/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp index d74bed43e7f..ee496a11b0b 100644 --- a/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp +++ b/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2007 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 @@ -61,9 +61,6 @@ namespace pb_ds struct null_trie_node_update { }; -#define PB_DS_STATIC_ASSERT(UNIQUE, E) \ - typedef detail::static_assert_dumclass)> UNIQUE##_static_assert_type - #define PB_DS_CLASS_T_DEC \ template @@ -358,7 +355,6 @@ namespace pb_ds #undef PB_DS_CLASS_T_DEC #undef PB_DS_CLASS_C_DEC #undef PB_DS_BASE_C_DEC -#undef PB_DS_STATIC_ASSERT } // namespace pb_ds diff --git a/libstdc++-v3/include/precompiled/extc++.h b/libstdc++-v3/include/precompiled/extc++.h index f01f39dc8b4..f3cd66236ba 100644 --- a/libstdc++-v3/include/precompiled/extc++.h +++ b/libstdc++-v3/include/precompiled/extc++.h @@ -1,6 +1,6 @@ // C++ includes used for precompiling extensions -*- C++ -*- -// Copyright (C) 2006 Free Software Foundation, Inc. +// Copyright (C) 2006, 2007 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 @@ -35,9 +35,12 @@ #include #include +#include #include #include +#include #include +#include #include #include #include @@ -54,7 +57,9 @@ #include #include #include +#include #include +#include #include #include #include diff --git a/libstdc++-v3/testsuite/17_intro/headers_c++_c++0x_compat.cc b/libstdc++-v3/testsuite/17_intro/headers_c++_c++0x_compat.cc new file mode 100644 index 00000000000..1052cd7cf26 --- /dev/null +++ b/libstdc++-v3/testsuite/17_intro/headers_c++_c++0x_compat.cc @@ -0,0 +1,146 @@ +// { dg-do compile } +// { dg-options "-Wc++0x-compat -Werror" } + +// Copyright (C) 2007 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 2, 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 COPYING. If not, write to the Free +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, +// USA. + +// As a special exception, you may use this file as part of a free software +// library without restriction. Specifically, if other files instantiate +// templates or use macros or inline functions from this file, or you compile +// this file and link it with other files to produce an executable, this +// file does not by itself cause the resulting executable to be covered by +// the GNU General Public License. This exception does not however +// invalidate any other reasons why the executable file might be covered by +// the GNU General Public License. + +// Make sure all the includes can be compiled with -Wc++0x-compat +// libstdc++/30571 + +// C +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// TR1 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// Extensions +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc b/libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc index ebf4330f2fa..f120ae69b5f 100644 --- a/libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc +++ b/libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc @@ -1,7 +1,7 @@ // { dg-do compile } // -*- C++ -*- -// Copyright (C) 2005, 2006 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2007 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 @@ -70,5 +70,5 @@ int main() h.resize(20); // { dg-error "instantiated from" } } -// { dg-error "invalid" "" { target *-*-* } 196 } +// { dg-error "invalid" "" { target *-*-* } 193 } // { dg-excess-errors "member function" } diff --git a/libstdc++-v3/testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp b/libstdc++-v3/testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp index 7e5e3d79474..b1e88f719e0 100644 --- a/libstdc++-v3/testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp +++ b/libstdc++-v3/testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005, 2006 Free Software Foundation, Inc. +// Copyright (C) 2005, 2006, 2007 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 @@ -50,6 +50,7 @@ #include #include #include +#include #include namespace pb_ds @@ -58,10 +59,6 @@ namespace pb_ds { namespace detail { -#define PB_DS_STATIC_ASSERT(UNIQUE, E) \ - typedef \ - pb_ds::detail::static_assert_dumclass)> UNIQUE##static_assert_type - template class order_statistics_functor { -- 2.30.2