Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

C++11 лажа?

19.08.16 14:48
Re: C++11 лажа?
 
dymanoid постоялец
dymanoid
в ответ 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.

Т.о. компилятор имеет право полностью исключить вызов конструкторов копирования и перемещения (при определённых критериях). Это также зависит от реализации компилятора и настроек оптимизации.

 

Перейти на