Init
This commit is contained in:
41
cppdraft/temp/deduct/decl.md
Normal file
41
cppdraft/temp/deduct/decl.md
Normal file
@@ -0,0 +1,41 @@
|
||||
[temp.deduct.decl]
|
||||
|
||||
# 13 Templates [[temp]](./#temp)
|
||||
|
||||
## 13.10 Function template specializations [[temp.fct.spec]](temp.fct.spec#temp.deduct.decl)
|
||||
|
||||
### 13.10.3 Template argument deduction [[temp.deduct]](temp.deduct#decl)
|
||||
|
||||
#### 13.10.3.7 Deducing template arguments from a function declaration [temp.deduct.decl]
|
||||
|
||||
[1](#1)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/templates.tex#L9479)
|
||||
|
||||
In a declaration whose [*declarator-id*](dcl.decl.general#nt:declarator-id "9.3.1 General [dcl.decl.general]") refers to a specialization
|
||||
of a function template, template argument deduction is performed to identify
|
||||
the specialization to which the declaration refers[.](#1.sentence-1)
|
||||
|
||||
Specifically, this is done
|
||||
for [explicit instantiations](temp.explicit "13.9.3 Explicit instantiation [temp.explicit]"), [explicit specializations](temp.expl.spec "13.9.4 Explicit specialization [temp.expl.spec]"),
|
||||
and certain [friend declarations](temp.friend "13.7.5 Friends [temp.friend]")[.](#1.sentence-2)
|
||||
|
||||
This is also done to
|
||||
determine whether a deallocation function template specialization matches a placementoperator new ([[basic.stc.dynamic.deallocation]](basic.stc.dynamic.deallocation "6.8.6.5.3 Deallocation functions"), [[expr.new]](expr.new "7.6.2.8 New"))[.](#1.sentence-3)
|
||||
|
||||
In all these cases, P is the type of the function template being considered
|
||||
as a potential match and A is either the function type from the
|
||||
declaration
|
||||
or the type of the deallocation function that would match the placementoperator new as described in [[expr.new]](expr.new "7.6.2.8 New")[.](#1.sentence-4)
|
||||
|
||||
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-5)
|
||||
|
||||
[2](#2)
|
||||
|
||||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/templates.tex#L9494)
|
||||
|
||||
If, for the set of function templates so considered, there is either no match or
|
||||
more than one match after partial ordering has been considered ([[temp.func.order]](temp.func.order "13.7.7.3 Partial ordering of function templates")),
|
||||
deduction fails and, in the declaration cases, the
|
||||
program is ill-formed[.](#2.sentence-1)
|
||||
Reference in New Issue
Block a user