std::DerivedFrom
From cppreference.com
                    
                                        
                    
                    
                                                            
                    | Defined in header  <concepts> | ||
| template< class Derived, class Base > concept DerivedFrom = | (since C++20) | |
The concept DerivedFrom<Derived, Base> is satisfied if and only if Base is a class type that is either Derived or a public and unambiguous base of Derived, ignoring cv-qualifiers.
Note that this behaviour is different to std::is_base_of when Base is a private or protected base of Derived.
See also
| (C++11) | checks if a type is derived from the other type (class template) | 
| (C++11)(C++20) | checks if a type can be converted to the other type (class template) |