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


1520. Alias template specialization vs pack expansion

Section: 13.7.8  [temp.alias]     Status: NAD     Submitter: Eric Niebler     Date: 2012-07-09

The relative order of template parameter pack expansion and alias template substitution is not clear in the current wording. For example, in

  template<typename T> using Int = int;

  template<typename ...Ts> struct S {
    typedef S<Int<Ts>...> other;
  };

it is not clear whether int is substituted for Int<Ts> first, leaving the ellipsis with no parameter pack to expand, or whether the pack expansion is to be applied first, producing a list of specializations of Int<T>.

(See also issue 1558.)

Rationale (October, 2012):

The latter interpretation (a list of specializations) is the correct interpretation; a parameter pack can't be substituted into anything, including an alias template specialization. CWG felt that this is clear enough in the current wording.