Build fix: missing operator- for iterator on g++7
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 12 Mar 2024 19:48:09 +0000 (15:48 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Tue, 12 Mar 2024 19:48:09 +0000 (15:48 -0400)
The project fails to build on 'g++ (SUSE Linux) 7.5.0' since its STL
implementation assumes that operator- is available for random access
iterators.

The build fails with the following error:

  event_name.cpp:82:71:   required from here
  /usr/include/c++/7/bits/stl_iterator_base_funcs.h:104:21: error: no match for ‘operator-’ (operand types are ‘lttng::utils::random_access_container_wrapper<const bt_value*, const char*, event_name_set_operations>::_iterator<const lttng::utils::random_access_container_wrapper<const bt_value*, const char*, event_name_set_operations>, const char* const>’ and ‘lttng::utils::random_access_container_wrapper<const bt_value*, const char*, event_name_set_operations>::_iterator<const lttng::utils::random_access_container_wrapper<const bt_value*, const char*, event_name_set_operations>, const char* const>’)

A trivial implementation of that operator is provided and allows the
build to succeed.

Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Change-Id: Ib1637e81e5cdc42cd5a142dcee21150ced9fcc55

src/common/container-wrapper.hpp

index 20642a8d294213a5a914bd6d3a0cbedcb2c4767c..25385fc43837961ec4301dd9f7254f0b89ccc3b6 100644 (file)
@@ -60,6 +60,11 @@ class random_access_container_wrapper {
                        return *this;
                }
 
+               ptrdiff_t operator-(const _iterator& other) const
+               {
+                       return _index - other._index;
+               }
+
                bool operator==(const _iterator& other) const noexcept
                {
                        return _index == other._index;
This page took 0.024989 seconds and 4 git commands to generate.