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