[libcxx] adds concept `std::common_reference_with`

Implements parts of:
    - P0898R3 Standard Library Concepts
    - P1754 Rename concepts to standard_case for C++20, while we still can

Depends on D96657

Reviewed By: ldionne, Mordante, #libc

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

GitOrigin-RevId: 3f5438c46cc8ddfbd221336153700da0bc527752
diff --git a/include/concepts b/include/concepts
index 3d57c40..a644325 100644
--- a/include/concepts
+++ b/include/concepts
@@ -173,6 +173,13 @@
     static_cast<_To>(__f());
   };
 
+// [concept.commonref]
+template<class _Tp, class _Up>
+concept common_reference_with =
+  same_as<common_reference_t<_Tp, _Up>, common_reference_t<_Up, _Tp>> &&
+  convertible_to<_Tp, common_reference_t<_Tp, _Up>> &&
+  convertible_to<_Up, common_reference_t<_Tp, _Up>>;
+
 // [concepts.arithmetic], arithmetic concepts
 template<class _Tp>
 concept integral = is_integral_v<_Tp>;