[libcxx][ranges] Add common_iterator.

Differential Revision: https://reviews.llvm.org/D103335

NOKEYCHECK=True
GitOrigin-RevId: 1a29403d2f8a0d74effcee6ab3d29d361fe97276
diff --git a/include/iterator b/include/iterator
index 52b04e4..80f3827 100644
--- a/include/iterator
+++ b/include/iterator
@@ -136,6 +136,10 @@
 template<class I1, class I2 = I1>
   concept indirectly_swappable = see below;                // since C++20
 
+template<input_or_output_iterator I, sentinel_for<I> S>
+  requires (!same_as<I, S> && copyable<I>)
+class common_iterator;                                     // since C++20
+
 template<class Category, class T, class Distance = ptrdiff_t,
          class Pointer = T*, class Reference = T&>
 struct iterator                                            // deprecated in C++17
@@ -564,6 +568,7 @@
 #include <__iterator/access.h>
 #include <__iterator/advance.h>
 #include <__iterator/back_insert_iterator.h>
+#include <__iterator/common_iterator.h>
 #include <__iterator/concepts.h>
 #include <__iterator/data.h>
 #include <__iterator/default_sentinel.h>