LINUX.ORG.RU

История изменений

Исправление byko3y, (текущая версия) :

item это константная ссылка, значит всё что внутри тоже константа. Как ты изменишь содержимое? Открой книжку по c++

Зануда, ты заставляешь меня усложнять пример:

https://godbolt.org/z/Krc73v5Te

Константный контейнер меняется? Меняется, Никакого const_cast нету. Надеюсь, ты доволен.

upd: процитирую здесь ключевой фрагмент:

struct Container
{
   std::shared_ptr<std::string> a;
   std::shared_ptr<std::string> b;
};

void tryChange(const Container& item) {
    *item.b = std::string("Bitch");
}

Ты жонглируешь консистентностями и позируешь версионностью, а банальный const уже который день осилить не можешь

При чем тут const сам по себе? Соглашение константности содержащихся объектов в контейнерах STL — это именно что соглашение, совсем не универсальное и натянутое на STL с большим скрипом.

Const во время декларации это редкий случай, когда значение изначально константа

Может быть редкий, но что же с ним делать? Я хочу передавать константы, которые константы. Мне теперь убиться? Почему я не могу передавать константы в контейнеры STL? Да, я знаю, что есть «простой выход» плана «скопируй константу», но зачем мне тогда изначально был нужен модификатор const у этих констант?

И ситуация становится совсем печальной, когда в значения добавляются счетчики ссылок, мутексы, и кэши — я как раз привел пример неконстантных констант в чистом STL, которые создатели STL не смогли адекватно обработать.

Исходная версия byko3y, :

item это константная ссылка, значит всё что внутри тоже константа. Как ты изменишь содержимое? Открой книжку по c++

Зануда, ты заставляешь меня усложнять пример:

https://godbolt.org/z/Krc73v5Te

Константный контейнер меняется? Меняется, Никакого const_cast нету. Надеюсь, ты доволен.

Ты жонглируешь консистентностями и позируешь версионностью, а банальный const уже который день осилить не можешь

При чем тут const сам по себе? Соглашение константности содержащихся объектов в контейнерах STL — это именно что соглашение, совсем не универсальное и натянутое на STL с большим скрипом.

Const во время декларации это редкий случай, когда значение изначально константа

Может быть редкий, но что же с ним делать? Я хочу передавать константы, которые константы. Мне теперь убиться? Почему я не могу передавать константы в контейнеры STL? Да, я знаю, что есть «простой выход» плана «скопируй константу», но зачем мне тогда изначально был нужен модификатор const у этих констант?

И ситуация становится совсем печальной, когда в значения добавляются счетчики ссылок, мутексы, и кэши — я как раз привел пример неконстантных констант в чистом STL, которые создатели STL не смогли адекватно обработать.