From 91076e200019f15436598a53e334574db5738093 Mon Sep 17 00:00:00 2001 From: Lubosz Sarnecki Date: Sat, 3 Aug 2024 13:42:36 +0200 Subject: [PATCH] libraries: Drop std::iterator template usage. Define iterator traits manually instead of using deprecated std:iterator template. See https://www.fluentcpp.com/2018/05/08/std-iterator-deprecated/ This fixes a C++17 deprecation warning and C++20 error on GCC 14. --- libraries/gpu/src/gpu/Buffer.h | 7 ++++++- libraries/shared/src/RingBufferHistory.h | 5 ++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libraries/gpu/src/gpu/Buffer.h b/libraries/gpu/src/gpu/Buffer.h index a30c6474c1..005f846443 100644 --- a/libraries/gpu/src/gpu/Buffer.h +++ b/libraries/gpu/src/gpu/Buffer.h @@ -198,9 +198,14 @@ public: //Template iterator with random access on the buffer sysmem template - class Iterator : public std::iterator + class Iterator { public: + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + using difference_type = Index; + using pointer = T*; + using reference = T&; Iterator(T* ptr = NULL, int stride = sizeof(T)): _ptr(ptr), _stride(stride) { } Iterator(const Iterator& iterator) = default; diff --git a/libraries/shared/src/RingBufferHistory.h b/libraries/shared/src/RingBufferHistory.h index c5222b9c39..4abd83ca1a 100644 --- a/libraries/shared/src/RingBufferHistory.h +++ b/libraries/shared/src/RingBufferHistory.h @@ -103,8 +103,11 @@ private: std::vector _buffer; public: - class Iterator : public std::iterator < std::random_access_iterator_tag, T > { + class Iterator { public: + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + Iterator(T* bufferFirst, T* bufferLast, T* newestAt, T* at) : _bufferFirst(bufferFirst), _bufferLast(bufferLast),