.. _input_range: ***************** meta::input_range ***************** Defined in header ````. .. code-block:: cpp template concept input_range = meta::range && meta::input_iterator>; Pre-C++20 implementation of the :rangeconcept:`input_range` concept. ---- Concept emulation ================= .. code-block:: cpp namespace mgs { namespace meta { template struct is_input_range { /* ... */ }; template constexpr auto is_input_range_v = is_input_range::value; template >> using input_range = T; } // namespace meta } // namespace mgs Example ======= .. code-block:: cpp #include using namespace mgs::meta; struct output_range { std::back_insert_iterator begin(); std::back_insert_iterator end(); }; static_assert(is_input_range_v, ""); static_assert(is_input_range_v, ""); static_assert(!is_input_range_v, ""); See also ======== * :ref:`range` * :ref:`input_iterator` * :ref:`iterator_t`