diff --git a/src/Core/BaseSettingsFwdMacros.h b/src/Core/BaseSettingsFwdMacros.h index 7020858a5b5..09a4397e483 100644 --- a/src/Core/BaseSettingsFwdMacros.h +++ b/src/Core/BaseSettingsFwdMacros.h @@ -2,4 +2,6 @@ #define DECLARE_SETTING_TRAIT(CLASS_NAME, TYPE) using CLASS_NAME##TYPE = SettingField##TYPE CLASS_NAME##Impl::*; -#define DECLARE_SETTING_SUBSCRIPT_OPERATOR(CLASS_NAME, TYPE) SettingField##TYPE & operator[](CLASS_NAME##TYPE t) const; +#define DECLARE_SETTING_SUBSCRIPT_OPERATOR(CLASS_NAME, TYPE) \ + const SettingField##TYPE & operator[](CLASS_NAME##TYPE t) const; \ + SettingField##TYPE & operator[](CLASS_NAME##TYPE t); diff --git a/src/Core/Settings.cpp b/src/Core/Settings.cpp index 84c124f7fb0..4518d78657c 100644 --- a/src/Core/Settings.cpp +++ b/src/Core/Settings.cpp @@ -1292,10 +1292,15 @@ bool Settings::operator==(const Settings & other) const } #define IMPLEMENT_SETTING_SUBSCRIPT_OPERATOR(CLASS_NAME, TYPE) \ - SettingField##TYPE & Settings::operator[](CLASS_NAME##TYPE t) const \ + const SettingField##TYPE & Settings::operator[](CLASS_NAME##TYPE t) const \ + { \ + return impl.get()->*t; \ + } \ + SettingField##TYPE & Settings::operator[](CLASS_NAME##TYPE t) \ { \ return impl.get()->*t; \ } + COMMON_SETTINGS_SUPPORTED_TYPES(Settings, IMPLEMENT_SETTING_SUBSCRIPT_OPERATOR) #undef IMPLEMENT_SETTING_SUBSCRIPT_OPERATOR