Abbreviated Function Template

When only auto or concept auto appears inside function parameter list then complier internally converts them to function template.
Function parameter becomes template parameter
Code
auto in parameter list

void f1(auto);

//Above declaration is same as 
template <class T> 
void f(T)
                
concept auto in parameter list

void f2(C1 auto);                           //C is a concept

//Above declaration is same as 
template <C1 T> 
void f2(T)
                
Variadic concept

void f3(C2 auto...);                        //C is a concept

//Above declaration is same as
template <C2... Ts>
void f3(Ts...)
                
Two concepts

void f4(const C3 auto*, C4 auto&); 

//Above declaration is same as
template <C3 T, C4 U> 
void f4(const T*, U&);
                
Template and concept

template <class T, C U>
void g(T x, U y, C auto z);

//Above declaration is same as
template <class T, C U, C W> 
void g(T x, U y, W z);