.. _input_or_output_iterator: ****************************** meta::input_or_output_iterator ****************************** Defined in header ````. .. code-block:: cpp template concept input_or_output_iterator = meta::dereferenceable && meta::weakly_incrementable; Pre-C++20 implementation of the :iterconcept:`input_or_output_iterator` concept. ---- Concept emulation ================= .. code-block:: cpp namespace mgs { namespace meta { template struct is_input_or_output_iterator { /* ... */ }; template constexpr auto is_input_or_output_iterator_v = is_input_or_output_iterator::value; template >> using input_or_output_iterator = I; } // namespace meta } // namespace mgs Example ======= .. code-block:: cpp #include using namespace mgs::meta; static_assert(is_input_or_output_iterator_v>, ""); static_assert(is_input_or_output_iterator_v>, ""); static_assert(is_input_or_output_iterator_v, ""); See also ======== * :ref:`dereferenceable` * :ref:`weakly_incrementable`