Страницы

Поиск по вопросам

суббота, 13 октября 2018 г.

auto как аргумент функции

Я знаю, что в стандарте C++ 14 возможно использовать ключевое слово auto при указании типа аргумента.
Но мне не понятно, по каким правилам это работает? Функция будет работать как шаблонная?


Ответ

В C++14 auto при описании типа аргумента можно использовать только в лямбда-выражениях. И да, эффект такого использования auto фактически сводится к тому, что метод operator () соответствующего функционального объекта станет шаблонным методом.
Т.е.
[](auto x) { return x + 1; }
порождает лямбда-класс, выглядящий примерно как
struct Lambda123 { ... template auto operator ()(T x) const { return x + 1; } ... };

Комментариев нет:

Отправить комментарий