In the GCC C++20 concepts lib, it has
template<typename _Derived, typename _Base>
concept derived_from = __is_base_of(_Base, _Derived)
&& is_convertible_v<const volatile _Derived*, const volatile _Base*>;
- Why is requiring just
__is_base_of(_Base, _Derived)not enough? - What is the need to use
const volatilein the test?