[PATCH] D55366: [libcxx] Add checks for unique value of array<T, 0>.begin() and array<T, 0>.end() .

Andrey Maksimov via Phabricator reviews at reviews.llvm.org
Thu Dec 6 05:44:34 PST 2018

amakc11 created this revision.
Herald added a reviewer: EricWF.
Herald added subscribers: libcxx-commits, ldionne.

The standard section array.zero <http://eel.is/c++draft/array.zero#2.sentence-1> requires the return value of begin() and end() methods of a zero-sized array to be unique. Eric Fiselier <https://reviews.llvm.org/p/EricWF/> clarifies: "That unique value cannot be null, and must be properly aligned". This patch adds checks for the first part of this clarification: unique value returned by these methods cannot be null.

  rCXX libc++



Index: test/std/containers/sequences/array/begin.pass.cpp
--- test/std/containers/sequences/array/begin.pass.cpp
+++ test/std/containers/sequences/array/begin.pass.cpp
@@ -40,6 +40,11 @@
       typedef NoDefault T;
       typedef std::array<T, 0> C;
       C c = {};
-      assert(c.begin() == c.end());
+      C::iterator ib, ie;
+      ib = c.begin();
+      ie = c.end();
+      assert(ib == ie);
+      assert(ib != nullptr);
+      assert(ie != nullptr);

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55366.176959.patch
Type: text/x-patch
Size: 538 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20181206/1ab3d729/attachment.bin>

More information about the libcxx-commits mailing list