|
|
@@ -20,6 +20,13 @@ using std::ranges::views::enumerate;
|
|
|
|
|
|
namespace jvalidate::detail {
|
|
|
|
|
|
+/**
|
|
|
+ * @brief A replacement for std::ranges::views::enumerate in C++20 (as enumerate
|
|
|
+ * is a C++23 feature).
|
|
|
+ * Much like python's enumerate() function, this is an iterator adapter that
|
|
|
+ * attaches the "index" of the iteration to each element - incrementing it as
|
|
|
+ * we go.
|
|
|
+ */
|
|
|
template <typename It> class enumurate_iterator {
|
|
|
public:
|
|
|
using traits_t = std::iterator_traits<It>;
|
|
|
@@ -28,7 +35,7 @@ public:
|
|
|
using reference = std::pair<size_t const &, typename traits_t::reference>;
|
|
|
using pointer = DerefProxy<reference>;
|
|
|
using difference_type = typename traits_t::difference_type;
|
|
|
- using iterator_category = typename traits_t::iterator_category;
|
|
|
+ using iterator_category = std::forward_iterator_tag;
|
|
|
|
|
|
private:
|
|
|
size_t index_ = 0;
|