[libcxx-commits] [PATCH] D103101: [libc++] Add _LIBCPP_ABI_NO_ITERATOR_BASES. Fix input/output iterators' difference_type for C++20.

Louis Dionne via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Tue May 25 14:04:16 PDT 2021


ldionne requested changes to this revision.
ldionne added inline comments.


================
Comment at: libcxx/include/iterator:792
 class _LIBCPP_TEMPLATE_VIS back_insert_iterator
-    : public iterator<output_iterator_tag,
-                      void,
-                      void,
-                      void,
-                      void>
+#if _LIBCPP_STD_VER <= 11 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
+    : public iterator<output_iterator_tag, void, void, void, void>
----------------
There is no ABI implication here AFAICT, since the first member will always begin at offset 0 anyway. So this means this can just be `#if _LIBCPP_STD_VER <= 14`.

Also, notice that your `_LIBCPP_STD_VER` is wrong, it should be compared to 14, not 11. The `std::iterator` bases were removed in C++17.


================
Comment at: libcxx/include/iterator:915
 class _LIBCPP_TEMPLATE_VIS istream_iterator
+#if _LIBCPP_STD_VER <= 11 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
     : public iterator<input_iterator_tag, _Tp, _Distance, const _Tp*, const _Tp&>
----------------
Same.


================
Comment at: libcxx/include/iterator:983
 class _LIBCPP_TEMPLATE_VIS ostream_iterator
+#if _LIBCPP_STD_VER <= 11 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
     : public iterator<output_iterator_tag, void, void, void, void>
----------------
Same.


================
Comment at: libcxx/include/iterator:1027
 class _LIBCPP_TEMPLATE_VIS istreambuf_iterator
+#if _LIBCPP_STD_VER <= 11 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
     : public iterator<input_iterator_tag, _CharT,
----------------
Same.


================
Comment at: libcxx/include/iterator:1104
 class _LIBCPP_TEMPLATE_VIS ostreambuf_iterator
+#if _LIBCPP_STD_VER <= 11 || !defined(_LIBCPP_ABI_NO_ITERATOR_BASES)
     : public iterator<output_iterator_tag, void, void, void, void>
----------------
Same.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103101/new/

https://reviews.llvm.org/D103101



More information about the libcxx-commits mailing list