Сообщение Re: Современные компиляторы и NRVO от 01.03.2024 16:36
Изменено 01.03.2024 16:40 andrey.desman
Re: Современные компиляторы и NRVO
Здравствуйте, _NN_, Вы писали:
_NN>С другой стороны, можно всегда приводить к rvalue и получить гарантировано отсутствие копирования, правда с гарантированным перемещением, которого не будет в случае NRVO.
Если компилятор не смог NRVO, то он и так будет пытаться сделать через move (если он нормальный компилятор, конечно). Так что смысла в return std::move(...) нет.
_NN>С другой стороны, можно всегда приводить к rvalue и получить гарантировано отсутствие копирования, правда с гарантированным перемещением, которого не будет в случае NRVO.
Если компилятор не смог NRVO, то он и так будет пытаться сделать через move (если он нормальный компилятор, конечно). Так что смысла в return std::move(...) нет.
Re: Современные компиляторы и NRVO
Здравствуйте, _NN_, Вы писали:
_NN>С другой стороны, можно всегда приводить к rvalue и получить гарантировано отсутствие копирования, правда с гарантированным перемещением, которого не будет в случае NRVO.
Если компилятор не смог NRVO, то он и так будет пытаться сделать через move (если он нормальный компилятор, конечно). Так что смысла в return std::move(...) нет если типы одинаковые.
_NN>С другой стороны, можно всегда приводить к rvalue и получить гарантировано отсутствие копирования, правда с гарантированным перемещением, которого не будет в случае NRVO.
Если компилятор не смог NRVO, то он и так будет пытаться сделать через move (если он нормальный компилятор, конечно). Так что смысла в return std::move(...) нет если типы одинаковые.