From aba94d205bf30554ea9f6ce784ecfce6c38f9df3 Mon Sep 17 00:00:00 2001 From: James R Date: Sun, 3 Dec 2023 09:53:35 -0800 Subject: [PATCH] srb2::MobjListView: support copy assignment --- src/mobj_list_view.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/mobj_list_view.hpp b/src/mobj_list_view.hpp index 246dbd8ba..fd804c55e 100644 --- a/src/mobj_list_view.hpp +++ b/src/mobj_list_view.hpp @@ -34,6 +34,14 @@ struct MobjListView using reference = value_type; Iterator(pointer ptr, F adv) : ptr_(deref(ptr)), adv_(adv) {} + Iterator& operator=(const Iterator& b) + { + // adv_ may be a lambda. However, lambdas are not + // copy assignable. Therefore, perform copy + // construction instead! + this->~Iterator(); + return *new(this) Iterator {b}; + } bool operator==(const Iterator& b) const { return ptr_ == b.ptr_; }; bool operator!=(const Iterator& b) const { return ptr_ != b.ptr_; };