]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR libstdc++/23053 (Const-correctness issue in TR1 hashtable)
authorDave Odell <evilalias@hotmail.com>
Mon, 25 Jul 2005 22:46:48 +0000 (22:46 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Mon, 25 Jul 2005 22:46:48 +0000 (22:46 +0000)
2005-07-25  Dave Odell  <evilalias@hotmail.com>

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
libstdc++-v3/include/tr1/hashtable
libstdc++-v3/testsuite/tr1/6_containers/unordered/hashtable/23053.cc [new file with mode: 0644]

index 311ec3467683b6dca8d72a891cc86beb137326d4..e3bf41c4207b5c583b92e80b8142fc4512cb901c 100644 (file)
@@ -1,3 +1,9 @@
+2005-07-25  Dave Odell  <evilalias@hotmail.com>
+
+       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  <pcarlini@suse.de>
 
        PR libstdc++/22515
index add5f5bde152058bf2fc3c8cffb3ec3eee8e84f4..e94f3bb65fdb3284baf2fbc8f1fa0ea21016960f 100644 (file)
@@ -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<iterator, bool>
       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<K, V, A, Ex, Eq, H1, H2, H, RP, c, m, u>::node* 
     hashtable<K, V, A, Ex, Eq, H1, H2, H, RP, c, m, u>::
-    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 (file)
index 0000000..1f9d0e7
--- /dev/null
@@ -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 <tr1/unordered_set>
+
+// libstdc++/23053
+void test01()
+{
+  std::tr1::unordered_set<int> s;
+
+  const std::tr1::unordered_set<int> &s_ref = s;
+
+  s_ref.find(27);
+}  
+
+int main()
+{
+  test01();
+  return 0;
+}