Template deduction works for function and for method.
If you have template class, something like:
template <class T1, class T2>
class MyClass
{
public:
MyClass(T1 a, T2 b)
};
You can't deduce type with something like
MyClass m(42, 53); // Illegal
auto m = MyClass(42, 53); // Illegal
You have to explicitly give type:
MyClass<int, int> m(42, 53); // Legal