g++ -std=c++14 -Wall -pedantic -pthread main.cpp && ./a.out
main.cpp:5:15: warning: use of 'auto' in parameter declaration only available with -fconcepts
void function(auto data)
With c++11 there is an error:
main.cpp:5:15: error: use of 'auto' in parameter declaration only available with -std=c++14 or -std=gnu++14
Templates are the way you do this with normal functions:
Alternatively, you could use a lambda:
I dont know when it changed, but currently syntax from Question is possible with c++14:
https://coliru.stacked-crooked.com/a/93ab03e88f745b6c
There is only warning about it:
With c++11 there is an error:
If you want that to mean that you can pass any type to the function, make it a template:
There's a proposal for C++17 to allow the syntax you used (as C++14 already does for generic lambdas), but it's not standard yet.