Сообщение Re[8]: COW and thread safety in Qt от 12.10.2023 14:45
Изменено 12.10.2023 14:57 Skorodum
Re[8]: COW and thread safety in Qt
Здравствуйте, andyp, Вы писали:
A>Как он может за что-то отвечать, если у Foo внутри mutable члены, а работают с элементами контейнера через константный указатель? Контейнер даже не будет знать о том, что внутри одного из его объектов что-то поменялось.
Ок, получилось воспроизвести и для этого не нужны никакие потоки, но(!) только ипользуя функцию at, про которую явно сказано, что она только для чтения и никогда не делает глубокую копию.
A>Константный доступ тоже может требовать синхронизации, а тут эти две вещи спарены. Говорил же, ошибки дизайна имхо.
Если преднамеренно абьюзить константность и мутабельность, то много где чего сломать можно
P.S. Код из разряда тупых головоломок на собеседование...
A>Как он может за что-то отвечать, если у Foo внутри mutable члены, а работают с элементами контейнера через константный указатель? Контейнер даже не будет знать о том, что внутри одного из его объектов что-то поменялось.
Ок, получилось воспроизвести и для этого не нужны никакие потоки, но(!) только ипользуя функцию at, про которую явно сказано, что она только для чтения и никогда не делает глубокую копию.
код | |
| |
A>Константный доступ тоже может требовать синхронизации, а тут эти две вещи спарены. Говорил же, ошибки дизайна имхо.
Если преднамеренно абьюзить константность и мутабельность, то много где чего сломать можно
P.S. Код из разряда тупых головоломок на собеседование...
Re[8]: COW and thread safety in Qt
Здравствуйте, andyp, Вы писали:
A>Как он может за что-то отвечать, если у Foo внутри mutable члены, а работают с элементами контейнера через константный указатель? Контейнер даже не будет знать о том, что внутри одного из его объектов что-то поменялось.
Ок, получилось воспроизвести и для этого не нужны никакие потоки, но(!) только ипользуя функцию at, про которую явно сказано, что она только для чтения и никогда не делает глубокую копию.
A>Константный доступ тоже может требовать синхронизации, а тут эти две вещи спарены. Говорил же, ошибки дизайна имхо.
Если преднамеренно абьюзить константность и мутабельность, то много где чего сломать можно
P.S. Код из разряда тупых головоломок на собеседование...
A>Как он может за что-то отвечать, если у Foo внутри mutable члены, а работают с элементами контейнера через константный указатель? Контейнер даже не будет знать о том, что внутри одного из его объектов что-то поменялось.
Ок, получилось воспроизвести и для этого не нужны никакие потоки, но(!) только ипользуя функцию at, про которую явно сказано, что она только для чтения и никогда не делает глубокую копию.
код | |
| |
A>Константный доступ тоже может требовать синхронизации, а тут эти две вещи спарены. Говорил же, ошибки дизайна имхо.
Если преднамеренно абьюзить константность и мутабельность, то много где чего сломать можно
P.S. Код из разряда тупых головоломок на собеседование...