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)

当且仅当 U 是类类型且为 T 本身或是 T 的公开无歧义基类时,概念 DerivedFrom < T, U > 得到满足。

尽管在上述描述中使用了 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)
检查一个类型是否是另一个类型的基类
(类模板)
检查一个类型是否能转换为另一个类型
(类模板)