[temp.deduct.funcaddr] # 13 Templates [[temp]](./#temp) ## 13.10 Function template specializations [[temp.fct.spec]](temp.fct.spec#temp.deduct.funcaddr) ### 13.10.3 Template argument deduction [[temp.deduct]](temp.deduct#funcaddr) #### 13.10.3.3 Deducing template arguments taking the address of a function template [temp.deduct.funcaddr] [1](#1) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/templates.tex#L8473) Template arguments can be deduced from the type specified when taking the address of an [overload set](over.over "12.3 Address of an overload set [over.over]")[.](#1.sentence-1) If there is a target, the function template's function type and the target type are used as the types ofP andA, and the deduction is done as described in [[temp.deduct.type]](temp.deduct.type "13.10.3.6 Deducing template arguments from a type")[.](#1.sentence-2) Otherwise, deduction is performed with empty sets of types P and A[.](#1.sentence-3) [2](#2) [#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/templates.tex#L8486) A placeholder type ([[dcl.spec.auto]](dcl.spec.auto "9.2.9.7 Placeholder type specifiers")) in the return type of a function template is a non-deduced context[.](#2.sentence-1) If template argument deduction succeeds for such a function, the return type is determined from instantiation of the function body[.](#2.sentence-2)