Здравствуйте, rg45, Вы писали:
R>Здравствуйте, vopl, Вы писали:
V>>именно так, для программиста этот исход не определен заранее. Аналогично программист не знает заранее, проинлайнит ли компилятор функцию или нет. Я с этим полностью согласен, это можно называть некоей "оптимизацией". Вопрос в другом: как это утверждение может помочь по сабжу (будет объект константным или нетАвтор: σ
Дата: 16.08.23
и затем — если он константный, будет ли UB при доступе к нему на запись после конструирования)?
R>Помочь может очень легко: мы имеем полное право отвечать на эти вопросы в презумции, что NRVO не примененяется (полагаю, ответы очевидны), а применение NRVO, если таковое произошло, никак не должно повлиять на рассуждения и выводы.
Ну ок, пусть будет так. Я же останусь при мнении что нельзя считать что "NRVO не примененяется а если применяется то это не влияет на ...", так как в случае применения NRVO существуют явно наблюдаемая разница в поведении программы:
— выбрасываются побочные эффекты в конструкторе так как выбрасывается весь конструктор,
— this объекта будет одинаковый внутри функции и снаружи,
— объект будет один а не два (со всеми вытекающими)