std::derived_from

来自cppreference.com
< cpp‎ | concepts
定义于头文件 <concepts>
template< class Derived, class Base >

concept derived_from =
  std::is_base_of_v<Base, Derived> &&

  std::is_convertible_v<const volatile Derived*, const volatile Base*>;
(C++20 起)

概念 derived_from<Derived, Base> 若且唯若忽略 cv 限定符后 Base 是类类型,且它为 Derived 或是 Derived 的公开无歧义基类才得到满足。

注意当 BaseDerived 的私有或受保护基类时,此行为异于 std::is_base_of

参阅

检查一个类型是否派生自另一个类型
(类模板)
检查是否能转换一个类型为另一类型
(类模板)