From 44c63bc400ee1b7f6bdbd68edff0aa2ea774a1ad Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Thu, 23 Apr 2026 08:32:25 +0100 Subject: [PATCH] Codefix 1d10e8ee6: explicitly delete unwanted indexers (#15522) Prevents typed-indexers being used via implicit conversion. --- src/core/convertible_through_base.hpp | 4 ++++ src/core/enum_type.hpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/core/convertible_through_base.hpp b/src/core/convertible_through_base.hpp index 62ee487beb..97c0e7e398 100644 --- a/src/core/convertible_through_base.hpp +++ b/src/core/convertible_through_base.hpp @@ -37,12 +37,16 @@ concept ConvertibleThroughBaseOrTo = std::is_convertible_v || Convertibl template class TypedIndexContainer : public Container { public: + Container::reference at(size_t pos) = delete; Container::reference at(const Index &pos) { return this->Container::at(pos.base()); } + Container::const_reference at(size_t pos) const = delete; Container::const_reference at(const Index &pos) const { return this->Container::at(pos.base()); } + Container::reference operator[](size_t pos) = delete; Container::reference operator[](const Index &pos) { return this->Container::operator[](pos.base()); } + Container::const_reference operator[](size_t pos) const = delete; Container::const_reference operator[](const Index &pos) const { return this->Container::operator[](pos.base()); } }; diff --git a/src/core/enum_type.hpp b/src/core/enum_type.hpp index 35c40978ab..b8d4d8889b 100644 --- a/src/core/enum_type.hpp +++ b/src/core/enum_type.hpp @@ -246,12 +246,16 @@ public: template class EnumClassIndexContainer : public Container { public: + Container::reference at(size_t pos) = delete; Container::reference at(const Index &pos) { return this->Container::at(to_underlying(pos)); } + Container::const_reference at(size_t pos) const = delete; Container::const_reference at(const Index &pos) const { return this->Container::at(to_underlying(pos)); } + Container::reference operator[](size_t pos) = delete; Container::reference operator[](const Index &pos) { return this->Container::operator[](to_underlying(pos)); } + Container::const_reference operator[](size_t pos) const = delete; Container::const_reference operator[](const Index &pos) const { return this->Container::operator[](to_underlying(pos)); } };