.. _derived_from: ****************** meta::derived_from ****************** Defined in header ````. .. code-block:: cpp template concept derived_from = meta::complete_type && std::is_base_of_v && std::is_convertible_v; Pre-C++20 implementation of the :concept:`derived_from` concept. ---- Concept emulation ================= .. code-block:: cpp namespace mgs { namespace meta { template struct is_derived_from { /* ... */ }; template constexpr auto is_derived_from_v = is_derived_from::value; template > using DerivedFrom = Derived; } // namespace meta } // namespace mgs Example ======= .. code-block:: cpp #include using namespace mgs::meta; struct A {}; struct B : A {}; static_assert(is_derived_from_v, ""); static_assert(is_derived_from_v, ""); static_assert(!is_derived_from_v, "");