.. _readable: ************** meta::readable ************** Defined in header ````. .. code-block:: cpp template concept readable = requires { typename meta::iter_value_t; typename meta::iter_reference_t; typename meta::iter_rvalue_reference_t; } && meta::common_reference_with&&, meta::iter_value_t&> && meta::common_reference_with&&, meta::iter_rvalue_reference_t&&> && meta::common_reference_with&&, meta::iter_value_t const&>; Pre-C++20 implementation of the :iterconcept:`readable` concept. ---- Concept emulation ================= .. code-block:: cpp namespace mgs { namespace meta { template struct is_readable { /* ... */ }; template constexpr auto is_readable_v = is_readable::value; template >> using readable = In; } // namespace meta } // namespace mgs Example ======= .. code-block:: cpp #include using namespace mgs::meta; static_assert(is_readable_v, ""); static_assert(is_readable_v, ""); static_assert(!is_readable_v, ""); See also ======== * :ref:`common_reference_with` * :ref:`iter_value_t` * :ref:`iter_reference_t` * :ref:`iter_rvalue_reference_t`