Default argument instantiation for member functions of templates
13.9.2 [temp.inst]
Maxim Kartashev

Created on 2015-01-19.00:00:00 last changed 2 weeks ago


Date: 2022-11-20.07:54:16

Default argument instantiation is described in 13.9.2 [temp.inst] paragraph 12, and although instantiation of default arguments for member functions of class templates is mentioned elsewhere a number of times, this paragraph only describes default argument instantiation for function templates.

Possible resolution:

Change in 13.9.2 [temp.inst] paragraph 12 as follows:

If a templated function template f is called in a way that requires a default argument to be used, the dependent names are looked up, the semantics constraints are checked, and the instantiation of any template used in the default argument is done as if the default argument had been an initializer used in a function template specialization with the same scope, the same template parameters and the same access as that of the function template f used at that point, except that the scope in which a closure type is declared ( [expr.prim.lambda.closure]) --- and therefore its associated namespaces --- remain as determined from the context of the definition for the default argument. This analysis is called default argument instantiation. The instantiated default argument is then used as the argument of f.
Date User Action Args
2022-11-20 07:54:16adminsetstatus: open -> review
2022-02-18 07:47:23adminsetstatus: drafting -> open
2015-01-19 00:00:00admincreate