Hi EricWF,

http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#2454

http://reviews.llvm.org/D9412

Files:
  include/memory
  test/std/utilities/memory/storage.iterator/raw_storag_iterator.pass.cpp

Index: include/memory
===================================================================
--- include/memory
+++ include/memory
@@ -1855,6 +1855,9 @@
     _LIBCPP_INLINE_VISIBILITY raw_storage_iterator& operator++() {++__x_; 
return *this;}
     _LIBCPP_INLINE_VISIBILITY raw_storage_iterator  operator++(int)
         {raw_storage_iterator __t(*this); ++__x_; return __t;}
+#if _LIBCPP_STD_VER >= 14
+    _LIBCPP_INLINE_VISIBILITY _OutputIterator base() const { return __x_; } 
+#endif
 };
 
 template <class _Tp>
Index: test/std/utilities/memory/storage.iterator/raw_storag_iterator.pass.cpp
===================================================================
--- test/std/utilities/memory/storage.iterator/raw_storag_iterator.pass.cpp
+++ test/std/utilities/memory/storage.iterator/raw_storag_iterator.pass.cpp
@@ -34,11 +34,17 @@
     Storage buffer;
     std::raw_storage_iterator<A*, A> it((A*)&buffer);
     assert(A_constructed == 0);
+#if __cplusplus >= 201402L
+    assert(it.base() == (A*)&buffer);
+#endif
     for (int i = 0; i < 3; ++i)
     {
         *it++ = A(i+1);
         A* ap = (A*)&buffer + i;
         assert(*ap == i+1);
         assert(A_constructed == i+1);
+#if __cplusplus >= 201402L
+        assert(it.base() == ap + 1);  // next place to write
+#endif
     }
 }

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
Index: include/memory
===================================================================
--- include/memory
+++ include/memory
@@ -1855,6 +1855,9 @@
     _LIBCPP_INLINE_VISIBILITY raw_storage_iterator& operator++() {++__x_; return *this;}
     _LIBCPP_INLINE_VISIBILITY raw_storage_iterator  operator++(int)
         {raw_storage_iterator __t(*this); ++__x_; return __t;}
+#if _LIBCPP_STD_VER >= 14
+    _LIBCPP_INLINE_VISIBILITY _OutputIterator base() const { return __x_; } 
+#endif
 };
 
 template <class _Tp>
Index: test/std/utilities/memory/storage.iterator/raw_storag_iterator.pass.cpp
===================================================================
--- test/std/utilities/memory/storage.iterator/raw_storag_iterator.pass.cpp
+++ test/std/utilities/memory/storage.iterator/raw_storag_iterator.pass.cpp
@@ -34,11 +34,17 @@
     Storage buffer;
     std::raw_storage_iterator<A*, A> it((A*)&buffer);
     assert(A_constructed == 0);
+#if __cplusplus >= 201402L
+    assert(it.base() == (A*)&buffer);
+#endif
     for (int i = 0; i < 3; ++i)
     {
         *it++ = A(i+1);
         A* ap = (A*)&buffer + i;
         assert(*ap == i+1);
         assert(A_constructed == i+1);
+#if __cplusplus >= 201402L
+        assert(it.base() == ap + 1);  // next place to write
+#endif
     }
 }
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to