template<typename T> void foo(T a, T b)
void foo(auto a, auto b)
template<typename T, typename U> void foo(T a, U b)