Здравствуйте, VladD2, Вы писали:
CS>>Из-за того что в C++ используется deep immutability который(ая) есть вещь суровая, то для практических целей оставлен
CS>>const_cast<> — явное снятие immutability.
VD>Это ты себе придумываешь. С++ предоставляет возможность локальной защиты в виде объявления переменных как неизменяемыми. Ничего "глубокого" тут нет.
Для самообразования про то что есть такое deep and shallow immutability:
http://www-sop.inria.fr/everest/events/cassis05/Transp/poll.pdf
Еще раз, с точки зрения теории:
class A {...}
A a1;
const A a2;
a1 и a2 принадлежат разным классам. С++ например считает именно так.
const A a2; есть неявное объявление класса A' множество свойств и методом которого
ограничено тольку "не мутирующими" свойствами и методами класса A.
Про то как deep immutability могло быть сделано в C# или Java
читаем здесь:
Javari Language — Java extended by readonly and mutable keywords:
"A Practical Type System and Language for Reference Immutability"
http://pag.csail.mit.edu/~mernst/pubs/ref-immutability-oopsla2004-slides.pdf