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