RVO при выводе типа decltype(auto)

143
26 марта 2021, 21:00

Формулировка RVO, по книге Скотта Мейерса "Эффективный и современный C++", гласит, что такое разрешение даётся, если 1) тип локального объекта совпадает с возвращаемым функцией и 2) локальный объект представляет собой возвращаемое значение.

Также приводятся примеры, вроде:

Widget foo() {
    Widget w;
    return w;
}

Вопрос заключеется в следующем - верно ли я понимаю, что при использовании вывода типа возвращаемого аргумента с использованием decltype(auto) (или более старой версии, для C++11):

decltype(auto) foo() {
    Widget w;
    return w;
}

, выводимый тип будет совпадать с типом возвращаемого локального объекта, удовлетворяя условию (1), соответственно RVO, в данном случае, имеет место быть? Или же сам факт того, что тип выводится, является противоречием для условия (1)?

READ ALSO
Как ограничить длину списка у .selectmenu JQuery UI

Как ограничить длину списка у .selectmenu JQuery UI

Есть выпадающее меню сделанное благодаря стилизации тега select с классом meal черезselectmenu, в списке очень много элементов и при открытии они все...

133
Дистанционная активация selectmenu JQuery UI

Дистанционная активация selectmenu JQuery UI

Есть элемент стилизованный благодаря selectmenu, также есть кнопка в другой месте страницы (но в пределах видимости экрана относительно selectmenu,...

138
Не отображается задний фон

Не отображается задний фон

Не подгружается картинка заднего фона, которая прописана в файле cssСам css файл подгружается

113