[PATCH] [libc++] Const qualify __gnu_cxx::hash_map<>::const_iterator::pointer type.

Peter Collingbourne peter at pcc.me.uk
Thu Feb 27 14:10:17 PST 2014


  Add tests.

Hi mclow.lists,

http://llvm-reviews.chandlerc.com/D2811

CHANGE SINCE LAST DIFF
  http://llvm-reviews.chandlerc.com/D2811?vs=7143&id=7411#toc

Files:
  include/ext/hash_map
  test/extensions/hash_map/const_iterator.fail.cpp

Index: include/ext/hash_map
===================================================================
--- include/ext/hash_map
+++ include/ext/hash_map
@@ -430,9 +430,9 @@
     typedef const value_type&                                    reference;
     typedef typename __pointer_traits::template
 #ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
-            rebind<value_type>
+            rebind<const value_type>
 #else
-            rebind<value_type>::other
+            rebind<const value_type>::other
 #endif
                                                                  pointer;
 
Index: test/extensions/hash_map/const_iterator.fail.cpp
===================================================================
--- /dev/null
+++ test/extensions/hash_map/const_iterator.fail.cpp
@@ -0,0 +1,18 @@
+//===----------------------------------------------------------------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is dual licensed under the MIT and the University of Illinois Open
+// Source Licenses. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include <ext/hash_map>
+
+int main()
+{
+    __gnu_cxx::hash_map<int, int> m;
+    m[1] = 1;
+    const __gnu_cxx::hash_map<int, int> &cm = m;
+    cm.find(1)->second = 2;  // error
+}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D2811.2.patch
Type: text/x-patch
Size: 1340 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140227/6081f5f7/attachment.bin>


More information about the cfe-commits mailing list