Здравствуйте, serjjj, Вы писали:
S>Есть константные объекты, есть константные методы. С простыми случаями (типа int size() const) все понятно. А вот как быть с таким: S>
S>Т.е. можно из константного объекта получить список не константных детей со всеми вытекающими последствиями. Разве в этом случае не нарушиться константность?
Прочёл весь тред — по существу вопроса не ответил никто.
ТС рассуждает о константном объекте.
Где в приведенном коде вообще объект?
Его нет.
Так как можно ответить на вопрос ТС?
Прошу привести более подробный фрагмент кода.
Здравствуйте, gandjustas, Вы писали:
S>>Я не понял: "const == thread safe" вместо или в дополнение к "const == logically const"?
G>const != thread safe
ты видео саттеровское смотрел?
если да — то объясни чем плохо const == thread safe
Здравствуйте, Abyx, Вы писали:
A>Здравствуйте, gandjustas, Вы писали:
S>>>Я не понял: "const == thread safe" вместо или в дополнение к "const == logically const"?
G>>const != thread safe A>ты видео саттеровское смотрел?
Конечно
A>если да — то объясни чем плохо const == thread safe
1) Тем что есть const_cast, то есть для вызывающего нет гарантий что объект не изменится
2) Тем что const аргумент не говорит вызывающему, что объект не может поменяться в другом потоке
Как обычно ссылаясь на Саттера вы потеряли контекст. Он говорил об STL. То есть все, что объявлено const в STL является thread safe. То есть можно вызывать из любых потоков, даже если есть другие потоки, которые меняют состояние объекта.
То есть сам по себе модификатор const не дает гарантий. А вот семантика const, начиная с C++11, такова, что должна гарантировать thread-safety.
Естественно эта забота ложится на программиста. Естественно есть тысячи библиотек, которые такое поведение не обеспечивают. На самом деле гарантированно обеспечивает только одна — STL. остальные могут это делать только случайно.