Здравствуйте, rg45, Вы писали:
R>Правильно, поэтому я и написал "другими словами". Его слова были буквально такими:
R>R>Типа передали константную ссылку — значит компилятор вправе предполагать что содержимое не меняется!
R>Но разве из этого не следует, что константные ссылки на неконстантные объекты должны быть запрещены (в well-defined программе, разумеется)? Иначе каким образом можно обеспечить сформулированное требование?
Все проблемы из этого и растут. Сначала напридумывают ненужных атрибутов. А потом когда они начинают конфликтовать придумывают костыли. Когда костыли не стыкуются придумывают несуществующие понятия и новые костыли. Где не могут найти решения добавляют очередной UB.
const — может быть только если данные лежат в ПЗУ или в памяти с запретом на запись. В C++ вместо того что бы явно решать задачу вечно какие-то обходные пути придумывают. Вместо того что бы сделать возможность явно сообщать компилятору о допущениях, используемых в программе, его заставляют об этом самому догадываться по косвенным признакам. В результате вместо нормального инструмента получаем минное поле. При этом мины заложенные ранее активируются постепенно, с увеличением версии стандарта языка.