[libcxx][ranges] Add `counted_iterator`.
Differential Revision: https://reviews.llvm.org/D106205
NOKEYCHECK=True
GitOrigin-RevId: 8a48e6dda9f7fb9c7ae7207dcb9570d2c11255ad
diff --git a/include/iterator b/include/iterator
index a9f794c..e0b2520 100644
--- a/include/iterator
+++ b/include/iterator
@@ -403,6 +403,13 @@
struct default_sentinel_t;
inline constexpr default_sentinel_t default_sentinel{};
+// [iterators.counted], counted iterators
+template<input_or_output_iterator I> class counted_iterator;
+
+template<input_iterator I>
+ requires see below
+ struct iterator_traits<counted_iterator<I>>;
+
template <class T, class charT = char, class traits = char_traits<charT>, class Distance = ptrdiff_t>
class istream_iterator
: public iterator<input_iterator_tag, T, Distance, const T*, const T&> // until C++17
@@ -574,6 +581,7 @@
#include <__iterator/back_insert_iterator.h>
#include <__iterator/common_iterator.h>
#include <__iterator/concepts.h>
+#include <__iterator/counted_iterator.h>
#include <__iterator/data.h>
#include <__iterator/default_sentinel.h>
#include <__iterator/distance.h>