Namespaces
Variants

std::experimental::ranges:: DerivedFrom

From cppreference.net
template < class T, class U >

concept bool DerivedFrom =
std:: is_base_of < U, T > :: value &&

std:: is_convertible < std:: remove_cv_t < T > * , std:: remove_cv_t < U > * > :: value ;
(ranges TS)

Das Konzept DerivedFrom < T, U > ist genau dann erfüllt, wenn U ein Klassentyp ist, der entweder T selbst oder eine öffentliche und eindeutige Basisklasse von T ist.

Trotz der Verwendung von std::is_base_of und std::is_convertible in der obigen Beschreibung, ist DerivedFrom nicht verpflichtet, diese in seiner Implementierung zu verwenden. Daher muss keine Subsumptionsbeziehung zwischen DerivedFrom < T, U > und std:: is_base_of < U,T > :: value oder std:: is_convertible < std:: remove_cv_t < T > * , std:: remove_cv_t < U > * > :: value bestehen.

Siehe auch

(C++11)
prüft, ob ein Typ eine Basis eines anderen Typs ist
(Klassentemplate)
prüft, ob ein Typ in einen anderen Typ konvertiert werden kann
(Klassentemplate)