.. _forward_iterator: ********************** meta::forward_iterator ********************** Defined in header ````. .. code-block:: cpp template concept forward_iterator = meta::input_iterator && meta::derived_from, std::forward_iterator_tag> && meta::incrementable && meta::sentinel_for; Pre-C++20 implementation of the :iterconcept:`forward_iterator` concept. ---- Concept emulation ================= .. code-block:: cpp namespace mgs { namespace meta { template struct is_forward_iterator { /* ... */ }; template constexpr auto is_forward_iterator_v = is_forward_iterator::value; template >> using forward_iterator = I; } // namespace meta } // namespace mgs Example ======= .. code-block:: cpp #include using namespace mgs::meta; static_assert(is_forward_iterator_v::iterator>, ""); static_assert(is_forward_iterator_v, ""); static_assert(!is_forward_iterator_v>, ""); See also ======== * :ref:`input_iterator` * :ref:`derived_from` * :ref:`iter_concept`