Формулировка RVO, по книге Скотта Мейерса "Эффективный и современный C++", гласит, что такое разрешение даётся, если 1) тип локального объекта совпадает с возвращаемым функцией и 2) локальный объект представляет собой возвращаемое значение.
Также приводятся примеры, вроде:
Widget foo() {
Widget w;
return w;
}
Вопрос заключеется в следующем - верно ли я понимаю, что при использовании вывода типа возвращаемого аргумента с использованием decltype(auto) (или более старой версии, для C++11):
decltype(auto) foo() {
Widget w;
return w;
}
, выводимый тип будет совпадать с типом возвращаемого локального объекта, удовлетворяя условию (1), соответственно RVO, в данном случае, имеет место быть? Или же сам факт того, что тип выводится, является противоречием для условия (1)?
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости