From 0912686d9b4a41fed203215be63f348161dc5e6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Fri, 1 Jul 2022 16:57:40 +0200 Subject: [PATCH] IteratorUtil: Forward (non-reference) return types correctly With auto&, an operator[] that returns a value (and not a reference) would result in the proxy returning a reference to a local temporary, which is UB --- src/KingSystem/Utils/IteratorUtil.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/KingSystem/Utils/IteratorUtil.h b/src/KingSystem/Utils/IteratorUtil.h index 3058201b..aa64b5a8 100644 --- a/src/KingSystem/Utils/IteratorUtil.h +++ b/src/KingSystem/Utils/IteratorUtil.h @@ -66,8 +66,8 @@ public: : mIndex(index), mContainer(container) {} int getIndex() const { return mIndex; } - constexpr auto& get() const { return mContainer[mIndex]; } - constexpr auto& operator*() const { return get(); } + constexpr decltype(auto) get() const { return mContainer[mIndex]; } + constexpr decltype(auto) operator*() const { return get(); } constexpr auto* operator->() const { return &get(); } private: