Создаю глобальную константную мапу и пытаюсь взят её элемент через опертаор [ ] в константную переменную, но компилятор говорит, что так нельзя. Какие ограничения не позволяют компилятору это сделать? Т.е. интересует именно причина, а не то как это обойти.
const std::unordered_map<int, string> MapWithModulesNames{
{1, string{"LegacyBssManager"}},
{2, string{"BsSettings"}},
};
int main() {
const string a = MapWithModulesNames[1];
system("PAUSE");
return 0;
}
У std::map нет константного operator[], потому что этот оператор создаёт элемент карты, если такого ключа ещё нет в оной. Если нужен доступ именно к существующему элементу, тогда нужно использовать at.
Проблема в том, что оператор [] неконстантный, и возвращает неконстантную ссылку. Поэтому к константному unordered_map он неприменим...
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости