std::experimental::ranges::DerivedFrom
From cppreference.com
                    
                                        
                    < cpp | experimental | ranges
                    
                                                            
                    | Defined in header  <experimental/ranges/concepts> | ||
| template < class T, class U > concept bool DerivedFrom() { return /* see below */; } | (ranges TS) | |
The concept DerivedFrom<T, U>() is satisfied if and only if std::is_base_of<U, T>::value is true.
Notes
Despite the use of std::is_base_of in its description, DerivedFrom is not required to use it in its implementation. Thus, DerivedFrom<T, U>() may not normalize tostd::is_base_of<U,T>::value during partial ordering of constraints.
See also
| (C++11) | checks if a type is derived from the other type (class template) |