Объявление функции с авто с использованием нового синтаксиса C ++ 11, но с авто и без -> - PullRequest
0 голосов
/ 01 января 2019

рассмотрим определение функции ниже:

auto& Fnc1() { return someNonLocalVariable; }

В этом случае тип возвращаемого значения явно не указывается с помощью ->.Но есть ключевое слово & after auto.Гарантирует ли это, что вместо копии переменной возвращается ссылка?Это поддерживаемая языковая функция (возвращающая ссылка)?С VS 2017 все работает как я ожидаю: вернуть ссылку.Но я не смог найти источник в Интернете, чтобы проверить.

1 Ответ

0 голосов
/ 01 января 2019

Да, это правильная спецификация, и, как прокомментировал Рон, он начал работать в C ++ 14.В C ++ 11 действительно требовался конечный синтаксис возвращаемого типа (-> после параметров).

Подробнее см. cppreference .

В объявлении функции, котороене использует конечный синтаксис возвращаемого типа, ключевое слово auto указывает, что тип возвращаемого значения будет выведен из операнда его оператора возврата, используя правила для вывода аргумента шаблона.

См. также автоматическое вычитание типа , где они включают пример использования auto&.Вы можете думать об этом как о том же наборе правил для объявления переменных с помощью ключевого слова auto.

...