Autoを別の関数の引数として渡す方法はありますか?
int function(auto data)
{
//DOES something
}
関数に任意の型を渡すことができることを意味する場合は、テンプレートにします。
template <typename T> int function(T data);
使用した構文を許可するC++ 17の提案があります(C++ 14が既に一般的なラムダに対して行っているように)が、まだ標準ではありません。
テンプレートは、通常の機能でこれを行う方法です。
template <typename T>
int function(T data)
{
//DOES something
}
または、ラムダを使用できます。
auto function = [] (auto data) { /*DOES something*/ };
私はそれがいつ変更されたのか分かりませんが、現在質問からの構文はc ++ 14で可能です:
https://coliru.stacked-crooked.com/a/93ab03e88f745b6c
それについての警告のみがあります:
g ++ -std = c ++ 14 -Wall -pedantic -pthread main.cpp && ./a.out main.cpp:5:15:警告:パラメーター宣言での 'auto'の使用は、-fconcepts void function(autoデータ)
C++ 11ではエラーがあります:
main.cpp:5:15:エラー:パラメーター宣言での 'auto'の使用は、-std = c ++ 14または-std = gnu ++ 14でのみ使用可能