This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 110b. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.

2023-01-15


2065. Current instantiation of a partial specialization

Section: 13.8.3.2  [temp.dep.type]     Status: CD6     Submitter: Richard Smith     Date: 2014-12-29

[Accepted at the November, 2020 meeting as part of paper P1787R6 and moved to DR at the February, 2021 meeting.]

According to 13.8.3.2 [temp.dep.type] paragraph 1, a name refers to the current instantiation if it is

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 <> (or an equivalent template alias specialization).

I don't think this works. How are the argument lists compared? If it's using the “equivalent” rules, this doesn't work because we make no provision for “functionally equivalent but not equivalent” here. If it's using 13.6 [temp.type] paragraph 1, that fails because it doesn't handle dependent template arguments at all.

The same issue would come up when defining members of a partial specialization out-of-line.