diff --git a/Examples/Framework/include/ActsExamples/EventData/Measurement.hpp b/Examples/Framework/include/ActsExamples/EventData/Measurement.hpp index fc3aacc84e73..31a5427fef01 100644 --- a/Examples/Framework/include/ActsExamples/EventData/Measurement.hpp +++ b/Examples/Framework/include/ActsExamples/EventData/Measurement.hpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -138,13 +139,29 @@ class MeasurementContainer { using Container = std::conditional_t; + IteratorImpl() : m_container(nullptr), m_index(0) {} + IteratorImpl(Container& container, std::size_t index) - : m_container(container), m_index(index) {} + : m_container(&container), m_index(index) {} + + template + explicit IteratorImpl(const IteratorImpl& o) + : m_container(o.m_container), m_index(o.m_index) {} - reference operator*() const { return m_container.getMeasurement(m_index); } + reference operator*() const { + assert(m_container != nullptr); + return m_container->getMeasurement(m_index); + } pointer operator->() const { return &operator*(); } + template + IteratorImpl& operator=(const IteratorImpl& o) { + m_container = o.m_container; + m_index = o.m_index; + return *this; + } + IteratorImpl& operator++() { ++m_index; return *this; @@ -161,7 +178,7 @@ class MeasurementContainer { } private: - Container& m_container; + Container* m_container; Index m_index; };