Подтвердить что ты не робот

Есть ли способ передать auto как аргумент в С++?

Есть ли способ передать auto в качестве аргумента другой функции?

int function(auto data)
{
    //DOES something
}
4b9b3361

Ответ 1

Если вы хотите, чтобы это означало, что вы можете передать любой тип функции, сделайте его шаблоном:

template <typename T> int function(T data);

Есть предложение для С++ 17, чтобы разрешить используемый вами синтаксис (поскольку С++ 14 уже используется для генерических лямбда), но он еще не стандартный.

Ответ 2

Шаблоны - это то, как вы делаете это с помощью обычных функций:

template <typename T>
int function(T data)
{
    //DOES something
}

В качестве альтернативы вы можете использовать lambda:

auto function = [] (auto data) { /*DOES something*/ };

Ответ 3

Я не знаю, когда это изменилось, но в настоящее время синтаксис из Вопроса возможен с С++ 14:

https://coliru.stacked-crooked.com/a/93ab03e88f745b6c

Есть только предупреждение об этом:

g++ -std = С++ 14 -Wall -педантика -pthread main.cpp &&./a.out main.cpp: 5: 15: предупреждение: использование 'auto' в объявлении параметров доступно только с [ CN03] функция void (автоматические данные)

С С++ 11 возникает ошибка:

main.cpp: 5: 15: ошибка: использование 'auto' в объявлении параметров доступно только при -std = С++ 14 или -std = gnu ++ 14