Date
2024-06-14.20:31:51
Message id
7714

Content

Suggested resolution [SUPERSEDED]:

  1. Change in 13.10.3.7 [temp.deduct.decl] paragraph 1 as follows:

    ... In all these cases, P is the function 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 placement operator new as described in 7.6.2.8 [expr.new] , in all cases ignoring the noexcept-specifier (if any) of the function types. The deduction is done as described in 13.10.3.6 [temp.deduct.type].
  2. Change in 13.10.3.5 [temp.deduct.partial] paragraph 3 as follows:

    The types used to determine the ordering depend on the context in which the partial ordering is done:
    • In the context of a function call, the types used are those function parameter types for which the function call has arguments. [ Footnote: ... ]
    • In the context of a call to a conversion function, the return types of the conversion function templates are used.
    • In other contexts (13.7.7.3 [temp.func.order]), the function template's function type outside of the noexcept-specifier is used.
  3. Change in 13.10.3.3 [temp.deduct.funcaddr] paragraph 1 as follows:

    Template arguments can be deduced from the type specified when taking the address of an overload set (12.3 [over.over]). If there is a target, the function template's function type and the target type are used as the types of P and A, ignoring the noexcept-specifier (if any) of both function types, and the deduction is done as described in 13.10.3.6 [temp.deduct.type]. Otherwise, deduction is performed with empty sets of types P and A.