[libcxx] adds concept std::derived_from

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

Reviewed By: ldionne, #libc

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

GitOrigin-RevId: c63de225fdd7c7adf6ed041c0bff318d9ae75c00
diff --git a/include/concepts b/include/concepts
index b44e8cc..7c42dc8 100644
--- a/include/concepts
+++ b/include/concepts
@@ -157,6 +157,12 @@
 template<class _Tp, class _Up>
 concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>;
 
+// [concept.derived]
+template<class _Dp, class _Bp>
+concept derived_from =
+  is_base_of_v<_Bp, _Dp> &&
+  is_convertible_v<const volatile _Dp*, const volatile _Bp*>;
+
 // [concept.convertible]
 template<class _From, class _To>
 concept convertible_to =