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

2024-12-19


2884. Qualified declarations of partial specializations

Section: 9.2.9.5  [dcl.type.elab]     Status: dup     Submitter: Krystian Stasiowski     Date: 2024-03-19

(From submission #521.)

Consider:

  namespace N
  {
    template<typename T>
    struct A;
  }

  template<>
  struct N::A<int>;   // #1

  template<typename T>
  struct N::A<T*>;    // #2

#1 is currently well-formed, but #2 is an ill-formed use of an elaborated-type-specifier. This is inconsistent and not aligned with implementation practice.

Suggested resolution:

Change in 9.2.9.5 [dcl.type.elab] paragraph 2 as follows:

If an elaborated-type-specifier is the sole constituent of a declaration, the declaration is ill-formed unless it is an explicit specialization (13.9.4 [temp.expl.spec]), a partial specialization (13.7.6 [temp.spec.partial]), an explicit instantiation (13.9.3 [temp.explicit]) or it has one of the following forms: ...

CWG 2024-05-17

Duplicate of issue 2874.