Explicitly specifying template arguments on every call to a function template (e.g.,
concat<std::string, int>(s, 3)) can quickly lead to unwieldy code. Fortunately, a C++ compiler can often automatically determine the intended template arguments using a powerful process called template argument deduction.
In this chapter we explain the details of the template argument deduction process. As is often the case in C++, there are many rules that usually produce an intuitive result. A solid understanding of this chapter allows us to avoid the more surprising situations.
Although template argument deduction was first developed to ease the invocation of function templates, it has since been broadened to apply to ...