[PATCH] D57039: Implement LWG3144 - span does not have a const_pointer typedef

Marshall Clow via Phabricator reviews at reviews.llvm.org
Mon Jan 21 17:03:26 PST 2019


mclow.lists created this revision.
mclow.lists added reviewers: ldionne, EricWF.

This issue is due to be adopted in Kona in Feb.
We already had it - as an extension.


https://reviews.llvm.org/D57039

Files:
  include/span
  test/std/containers/views/types.pass.cpp


Index: test/std/containers/views/types.pass.cpp
===================================================================
--- test/std/containers/views/types.pass.cpp
+++ test/std/containers/views/types.pass.cpp
@@ -21,6 +21,8 @@
 //  using difference_type        = ptrdiff_t;
 //  using pointer                = element_type *;
 //  using reference              = element_type &;
+//  using const_pointe           = const element_type *;
+//  using const_reference        = const element_type &;
 //  using iterator               = implementation-defined;
 //  using const_iterator         = implementation-defined;
 //  using reverse_iterator       = std::reverse_iterator<iterator>;
@@ -70,7 +72,9 @@
     ASSERT_SAME_TYPE(typename S::index_type,      std::ptrdiff_t);
     ASSERT_SAME_TYPE(typename S::difference_type, std::ptrdiff_t);
     ASSERT_SAME_TYPE(typename S::pointer,         ElementType *);
+    ASSERT_SAME_TYPE(typename S::const_pointer,   const ElementType *);
     ASSERT_SAME_TYPE(typename S::reference,       ElementType &);
+    ASSERT_SAME_TYPE(typename S::const_reference, const ElementType &);
 
     static_assert(S::extent == Size); // check that it exists
 
Index: include/span
===================================================================
--- include/span
+++ include/span
@@ -43,8 +43,10 @@
     using index_type = ptrdiff_t;
     using difference_type = ptrdiff_t;
     using pointer = element_type*;
+    using const_pointer = const element_type*;
     using reference = element_type&;
     using iterator = implementation-defined;
+    using const_reference = const element_type&;
     using const_iterator = implementation-defined;
     using reverse_iterator = std::reverse_iterator<iterator>;
     using const_reverse_iterator = std::reverse_iterator<const_iterator>;
@@ -196,9 +198,9 @@
     using index_type             = ptrdiff_t;
     using difference_type        = ptrdiff_t;
     using pointer                = _Tp *;
-    using const_pointer          = const _Tp *; // not in standard
+    using const_pointer          = const _Tp *;
     using reference              = _Tp &;
-    using const_reference        = const _Tp &; // not in standard
+    using const_reference        = const _Tp &;
     using iterator               =  __wrap_iter<pointer>;
     using const_iterator         =  __wrap_iter<const_pointer>;
     using reverse_iterator       = _VSTD::reverse_iterator<iterator>;
@@ -368,9 +370,9 @@
     using index_type             = ptrdiff_t;
     using difference_type        = ptrdiff_t;
     using pointer                = _Tp *;
-    using const_pointer          = const _Tp *; // not in standard
+    using const_pointer          = const _Tp *;
     using reference              = _Tp &;
-    using const_reference        = const _Tp &; // not in standard
+    using const_reference        = const _Tp &;
     using iterator               =  __wrap_iter<pointer>;
     using const_iterator         =  __wrap_iter<const_pointer>;
     using reverse_iterator       = _VSTD::reverse_iterator<iterator>;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D57039.182839.patch
Type: text/x-patch
Size: 3063 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20190122/e15dd14e/attachment.bin>


More information about the libcxx-commits mailing list