[libc++][ranges] Implement `uninitialized_copy{,_n}` and `uninitialized_move{,_n}`.

Also implement `in_out_result` which is a prerequisite.

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

NOKEYCHECK=True
GitOrigin-RevId: 8d23b7420c92ddf8c3e5da39a90a1982fc72c231
diff --git a/include/algorithm b/include/algorithm
index 55b0bc5..932d17d 100644
--- a/include/algorithm
+++ b/include/algorithm
@@ -641,6 +641,12 @@
     constexpr bool     // constexpr in C++20
     prev_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare comp);
 
+namespace ranges {
+// [algorithms.results], algorithm result types
+template<class InputIterator, class OutputIterator>
+    struct in_out_result;
+}
+
 }  // std
 
 */
@@ -685,6 +691,7 @@
 #include <__algorithm/generate.h>
 #include <__algorithm/generate_n.h>
 #include <__algorithm/half_positive.h>
+#include <__algorithm/in_out_result.h>
 #include <__algorithm/includes.h>
 #include <__algorithm/inplace_merge.h>
 #include <__algorithm/is_heap.h>