std::DerivedFrom (3) - Linux Manuals

std::DerivedFrom: std::DerivedFrom


std::DerivedFrom - std::DerivedFrom


Defined in header <concepts>
template< class Derived, class Base >
concept DerivedFrom = (since C++20)
std::is_base_of_v<Base, Derived> &&
std::is_convertible_v<const volatile Derived*, const volatile Base*>;

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

is_base_of checks if a type is derived from the other type
                       (class template)

is_nothrow_convertible checks if a type can be converted to the other type
                       (class template)