[libc++] Remove a bunch of conditionals on _LIBCPP_DEBUG_LEVEL
authorLouis Dionne <ldionne.2@gmail.com>
Fri, 3 Jun 2022 19:17:03 +0000 (15:17 -0400)
committerLouis Dionne <ldionne.2@gmail.com>
Mon, 6 Jun 2022 13:54:26 +0000 (09:54 -0400)
commit4eab04f8491ab4fb8456eea9a73657701c554625
treed451142edb4c92341d36e43a86ecffa38af453c8
parenta1f1bd547b0d4c4b200dd485b85366bcd24c84c0
[libc++] Remove a bunch of conditionals on _LIBCPP_DEBUG_LEVEL

Instead of providing two different constructors for iterators that
support the debug mode, provide a single constructor but leave the
container parameter unused when the debug mode is not enabled.

This allows simplifying all the call sites to unconditionally pass
the container, which removes a bunch of duplication in the container's
implementation.

Note that this patch does add some complexity to std::span, however
that is only because std::span has the ability to use raw pointers
as iterators instead of __wrap_iter. In retrospect, I believe it was
a mistake to provide that capability, and so it will be removed in a
future patch, along with the complexity added by this patch.

Differential Revision: https://reviews.llvm.org/D126993
libcxx/include/__hash_table
libcxx/include/__iterator/wrap_iter.h
libcxx/include/list
libcxx/include/span
libcxx/include/string
libcxx/include/vector