#include
#include
void foo( int )
{
}
int main()
{
std::vector< int > v( { 1,2,3 } );
std::for_each( v.begin(), v.end()
This was discussed briefly by Herb Sutter during an interview. Your demand for auto
arguments is in fact no different from demanding that any function should be declarable with auto
, like this:
auto add(auto a, auto b) -> decltype(a + b) { return a + b; }
However, note that this isn't really a function at all, but rather it's a template function, akin to:
template
auto add(S a, T b) -> decltype(a + b) { return a + b; }
So you are essentially asking for a facility to turn any function into a template by changing its arguments. Since templates are a very different sort of entity in the type system of C++ (think of all the special rules for templates, like two-phase look-up and deduction), this would be radical design change with unforeseeable ramifications, which certainly isn't going to be in the standard any time soon.