CWG Issue 1160 (original) (raw)
This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 117a. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-04-13
1160. Definitions of template members and the current instantiation
Section: 13.8.3.2 [temp.dep.type]Status: C++11Submitter: GBDate: 2010-08-03
[Voted into the WP at the November, 2010 meeting.]
The current rules for determining whether a name refers to the current instantiation, given in 13.8.3.2 [temp.dep.type] paragraph 1, do not cover the case when a template-id matching a primary template or partial specialization appears in the definition of a member of the template.
Proposed resolution (August, 2010):
Change 13.8.3.2 [temp.dep.type] paragraph 1 as follows:
In the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, aA name refers to the_current instantiation_ if it is
- in the definition of a class template, a nested class of a class template, a member of a class template, or a member of a nested class of a class template, the injected-class-name (Clause 11 [class]) of the class template or nested class,
- in the definition of a primary class template or a member of a primary class template, the name of the class template followed by the template argument list of the primary template (as described below) enclosed in<>,
- in the definition of a nested class of a class template, the name of the nested class referenced as a member of the current instantiation, or
- in the definition of a partial specialization or a member of a partial specialization, the name of the class template followed by the template argument list of the partial specialization enclosed in <>. If the_n_th template parameter is a parameter pack, the_n_th template argument is a pack expansion (13.7.4 [temp.variadic]) whose pattern is the name of the parameter pack.