.. _output_iterator: ********************* meta::output_iterator ********************* Defined in header ````. .. code-block:: cpp template concept output_iterator = meta::input_or_output_iterator && meta::writable && requires(I i, T&& t) { *i++ = std::forward(t); }; Pre-C++20 implementation of the :iterconcept:`output_iterator` concept. ---- Concept emulation ================= .. code-block:: cpp namespace mgs { namespace meta { template struct is_output_iterator { /* ... */ }; template constexpr auto is_output_iterator_v = is_output_iterator::value; template >> using output_iterator = I; } // namespace meta } // namespace mgs Example ======= .. code-block:: cpp #include using namespace mgs::meta; static_assert(is_output_iterator_v>, ""); static_assert(is_output_iterator_v, ""); static_assert(!is_output_iterator_v, ""); static_assert(!is_output_iterator_v>, ""); See also ======== * :ref:`input_or_output_iterator` * :ref:`writable`