.. _movable: ************* meta::movable ************* Defined in header ````. .. code-block:: cpp template concept movable = std::is_object_v && meta::move_constructible && meta::assignable_from && meta::swappable; Pre-C++20 implementation of the :concept:`movable` concept. ---- Concept emulation ================= .. code-block:: cpp namespace mgs { namespace meta { template struct is_movable { /* ... */ }; template constexpr auto is_movable_v = is_movable::value; template >> using movable = T; } // namespace meta } // namespace mgs Example ======= .. code-block:: cpp #include using namespace mgs::meta; static_assert(is_movable_v, ""); static_assert(is_movable_v, ""); static_assert(!is_movable_v, ""); See also ======== * :ref:`move_constructible` * :ref:`assignable_from` * :ref:`swappable`