Вход на сайт
C++11 лажа?
500 просмотров
Перейти к просмотру всей ветки
в ответ anly 19.08.16 10:43
Здесь имеет место быть т.н. RVO (return value optimization) или NRVO (named return value optimization). Обе оптимизации являются частным случаем copy (move) elision.
В стандарте есть такая фраза:
When certain criteria are met, an implementation is allowed to omit the copy/move construction of a class object, even if the copy/move constructor and/or destructor for the object have side effects.
Т.о. компилятор имеет право полностью исключить вызов конструкторов копирования и перемещения (при определённых критериях). Это также зависит от реализации компилятора и настроек оптимизации.