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

Сообщение Re[59]: Когда это наконец станет defined behavior? от 13.05.2023 18:08

Изменено 13.05.2023 18:58 rg45

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

_>·>... Да не даёт const ровным счётом ничего. Только если либо копия передаётся, либо передача ownership, и это немного помогает в некоторых случаях, но возможностей стрельнуть в ногу всё равно дофига.


_>Например некоторый случай


Компилятор имеет право воспринимать происходящее следующим образом:
В векторе 1 элемент
Вектор не реаллоцировался.
Указатель на элемет в первом cout и во втором cout один и тот же.
И там и там используется константное поле
Я его уже читал при первом cout
Зачем мне его читать еще раз, это же константа!
Вывожу закэшированное значение.


Бред собачий. Не имеет права компилятор так воспринимать происходящее. Вектор неконстантный и он модифицировался. Была реллокация или нет — это насрать. Более того, в этом случае используется даже неконстантная версия метода back, которая возвращает неконстантную ссылку на элемент вектора. Если какой-то компилятор так делает, то это просто баг. Это во-первых. А во-вторых, а какой компилятор так делает — пруфы будут?
Re[59]: Когда это наконец станет defined behavior?
Здравствуйте, kov_serg, Вы писали:

_>·>... Да не даёт const ровным счётом ничего. Только если либо копия передаётся, либо передача ownership, и это немного помогает в некоторых случаях, но возможностей стрельнуть в ногу всё равно дофига.


_>Например некоторый случай


Компилятор имеет право воспринимать происходящее следующим образом:
В векторе 1 элемент
Вектор не реаллоцировался.
Указатель на элемет в первом cout и во втором cout один и тот же.
И там и там используется константное поле
Я его уже читал при первом cout
Зачем мне его читать еще раз, это же константа!
Вывожу закэшированное значение.


Бред собачий. Не имеет права компилятор так воспринимать происходящее. Вектор неконстантный и он модифицировался. Была реллокация или нет — это насрать. Более того, в этом случае используется даже неконстантная версия метода back, которая возвращает неконстантную ссылку на элемент вектора. Поводов для описанной оптимизации здесь нет от слова "совсем". Если какой-то компилятор так делает, то это просто баг. Это во-первых. А во-вторых, а какой компилятор так делает — пруфы будут?