7 Concepts library [concepts.lib]

7.3 Core language concepts [concepts.lib.corelang]

7.3.3 Concept DerivedFrom [concepts.lib.corelang.derived]

template <class T, class U> concept bool DerivedFrom = is_base_of<U, T>::value && is_convertible<remove_cv_t<T>*, remove_cv_t<U>*>::value; // see below

There need not be any subsumption relationship between DerivedFrom<T, U> and either is_base_of<U, T>::value or is_convertible<remove_cv_t<T>*, remove_cv_t<U>*>::value.

Note: DerivedFrom<T, U> is satisfied if and only if T is publicly and unambiguously derived from U, or T and U are the same class type ignoring cv-qualifiers.  — end note ]