Namespaces
Variants

std::experimental::ranges:: DerivedFrom

From cppreference.net
Определено в заголовочном файле <experimental/ranges/concepts>
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)

Концепт DerivedFrom < T, U > выполняется тогда и только тогда, когда U является типом класса, который представляет собой либо T , либо открытый и однозначный базовый класс для T .

Несмотря на использование std::is_base_of и std::is_convertible в приведенном выше описании, DerivedFrom не обязан использовать их в своей реализации. Таким образом, не требуется наличия отношения включения между DerivedFrom < T, U > и std:: is_base_of < U,T > :: value или std:: is_convertible < std:: remove_cv_t < T > * , std:: remove_cv_t < U > * > :: value .

Смотрите также

(C++11)
проверяет, является ли тип базовым для другого типа
(class template)
проверяет, может ли тип быть преобразован в другой тип
(class template)