From 7f50ddeef61d29b1bbf09aa2862390d81f2f6c37 Mon Sep 17 00:00:00 2001 From: Dave Odell Date: Mon, 25 Jul 2005 22:46:48 +0000 Subject: [PATCH] re PR libstdc++/23053 (Const-correctness issue in TR1 hashtable) 2005-07-25 Dave Odell PR libstdc++/23053 * include/tr1/hashtable (hashtable<>::find_node): Const-ify. * testsuite/tr1/6_containers/unordered/hashtable/23053.cc: New. From-SVN: r102372 --- libstdc++-v3/ChangeLog | 6 +++ libstdc++-v3/include/tr1/hashtable | 9 +++-- .../6_containers/unordered/hashtable/23053.cc | 39 +++++++++++++++++++ 3 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 libstdc++-v3/testsuite/tr1/6_containers/unordered/hashtable/23053.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 311ec346768..e3bf41c4207 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2005-07-25 Dave Odell + + PR libstdc++/23053 + * include/tr1/hashtable (hashtable<>::find_node): Const-ify. + * testsuite/tr1/6_containers/unordered/hashtable/23053.cc: New. + 2005-07-25 Paolo Carlini PR libstdc++/22515 diff --git a/libstdc++-v3/include/tr1/hashtable b/libstdc++-v3/include/tr1/hashtable index add5f5bde15..e94f3bb65fd 100644 --- a/libstdc++-v3/include/tr1/hashtable +++ b/libstdc++-v3/include/tr1/hashtable @@ -1055,14 +1055,14 @@ namespace tr1 Insert_Return_Type; node* - find_node(node* p, const key_type& k, typename hashtable::hash_code_t c); + find_node(node* p, const key_type& k, + typename hashtable::hash_code_t c) const; std::pair insert(const value_type&, std::tr1::true_type); iterator - insert - (const value_type&, std::tr1::false_type); + insert(const value_type&, std::tr1::false_type); public: // Insert and erase Insert_Return_Type @@ -1464,7 +1464,8 @@ namespace tr1 bool c, bool m, bool u> typename hashtable::node* hashtable:: - find_node(node* p, const key_type& k, typename hashtable::hash_code_t code) + find_node(node* p, const key_type& k, + typename hashtable::hash_code_t code) const { for ( ; p ; p = p->m_next) if (this->compare (k, code, p)) diff --git a/libstdc++-v3/testsuite/tr1/6_containers/unordered/hashtable/23053.cc b/libstdc++-v3/testsuite/tr1/6_containers/unordered/hashtable/23053.cc new file mode 100644 index 00000000000..1f9d0e76a64 --- /dev/null +++ b/libstdc++-v3/testsuite/tr1/6_containers/unordered/hashtable/23053.cc @@ -0,0 +1,39 @@ +// { dg-do compile } + +// Copyright (C) 2005 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, +// USA. + +// 6.3 Unordered associative containers + +#include + +// libstdc++/23053 +void test01() +{ + std::tr1::unordered_set s; + + const std::tr1::unordered_set &s_ref = s; + + s_ref.find(27); +} + +int main() +{ + test01(); + return 0; +}