Информация об изменениях

Сообщение Re[21]: Когда это наконец станет defined behavior? от 29.04.2023 21:52

Изменено 29.04.2023 21:54 T4r4sB

Re[21]: Когда это наконец станет defined behavior?
Здравствуйте, rg45, Вы писали:

R>Другими словами, ты предлагаешь запретить привязывать константные ссылки к неконстантным объектам?


Можно просто запретить одновременно обращаться к объекту по константной ссылке и менять его по мутабельной ссылке. А если такое случилось — считать что это УБ.
А что, вот руст так и сделал. Там правило есть: на объект запрещено иметь мутабельную и хотя бы 1 иммутабельную ссылку. И две мутабельные тоже запрещено иметь. То есть мутабельная ссылка должна быть уникальной. Правда там компилятор за всем следит и не получится это обойти, кроме как "сломать" всё при помощи unsafe. И да, в русте в коде, аналогичном моему, будет сделано именно одно чтение из памяти. Ну и мутировать глобалку он без unsafe не даст.
Re[21]: Когда это наконец станет defined behavior?
Здравствуйте, rg45, Вы писали:

R>Другими словами, ты предлагаешь запретить привязывать константные ссылки к неконстантным объектам?


Можно просто запретить одновременно обращаться к объекту по константной ссылке и менять его по мутабельной ссылке. А если такое случилось — считать что это УБ.
А что, вот руст так и сделал. Там правило есть: на объект запрещено иметь мутабельную и хотя бы 1 иммутабельную ссылку. И две мутабельные тоже запрещено иметь. То есть мутабельная ссылка должна быть уникальной. Правда там компилятор за всем следит и не получится это обойти, кроме как "сломать" всё при помощи unsafe. И да, в русте в коде, аналогичном моему, будет сделано именно одно чтение из памяти. Ну и мутировать глобалку он без unsafe не даст.

R>ИМХО, подобные хотелки здорово оторваны от реальности.


Ага, как и strict aliasing, переполнение знаковых итд. В языке нет механизма отслеживать нарушение этих правил. Даже санитайзер для проверки алиасинга до сих пор не запилили.