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

Сообщение Re[3]: Про идентичность const от 22.01.2025 19:47

Изменено 24.01.2025 17:14 rg45

Re[3]: Про идентичность const
Здравствуйте, Shmj, Вы писали:

S>Не случайность а оптимизация. Но подобные оптимизации в C++ возможны только для строк, для более сложных constexpr — так же могли бы сделать в теории, но пока не смогли на практике.


Откуда у тебя уверенность, что подобные оптимизации невозможны для других типов? Компилятор может применять любые оптимизации, если это не меняет видимого поведения программы — вплоть до того, что вообще не создавать каких-то объектов, которые фигурируют в исходном тексте программы. Но только к твоему случаю это не относится — ты ведь выводишь на печать адреса объектов, а они обязаны быть разными. Соответственно компилятор не может применить подобную оптимизацию в данном случае. Своего рода эффект наблюдателя.

P.S. Тьфу, блин, всё-таки, втянул ты меня в свою болтологию.

P.P.S. И кстати, в твоём примере компмилер запросто может вывести на экран два фейковых адреса, где ПРЕДПОЛОЖИТЕЛЬНО могли БЫ быть созданы твои объекты, а создание самих объектов проскипать. Опять же, если это не меняет видимого поведения программы. И обнаружить ты это можешь только заглянув в объектный код. Не может он поскипать создание объектов, потому что не видит, каким образом эти адреса используются в basic_ostream::opeartor<<.
Re[3]: Про идентичность const
Здравствуйте, Shmj, Вы писали:

S>Не случайность а оптимизация. Но подобные оптимизации в C++ возможны только для строк, для более сложных constexpr — так же могли бы сделать в теории, но пока не смогли на практике.


Откуда у тебя уверенность, что подобные оптимизации невозможны для других типов? Компилятор может применять любые оптимизации, если это не меняет видимого поведения программы — вплоть до того, что вообще не создавать каких-то объектов, которые фигурируют в исходном тексте программы. Но только к твоему случаю это не относится — ты ведь выводишь на печать адреса объектов, а они обязаны быть разными. Соответственно компилятор не может применить подобную оптимизацию в данном случае. Своего рода эффект наблюдателя.

P.S. Тьфу, блин, всё-таки, втянул ты меня в свою болтологию.

P.P.S. И кстати, в твоём примере компмилер запросто может вывести на экран два фейковых адреса, где ПРЕДПОЛОЖИТЕЛЬНО могли БЫ быть созданы твои объекты, а создание самих объектов проскипать. Опять же, если это не меняет видимого поведения программы. И обнаружить ты это можешь только заглянув в объектный код.

Это я написал, не подумав. Не может он поскипать создание объектов, потому что не видит, каким образом эти адреса используются в basic_ostream::opeartor<<.