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
[Accepted as a DR at the June, 2023 meeting.]
Subclause 13.7.4 [temp.variadic] paragraph 11 specifies:
The instantiation of any other pack expansion produces a list of elements E1, E2, ... , EN.
Consider this example:
template<class ...T> struct Align{ alignas(T...) unsigned char buffer[128]; }; Align<int, short> a;
The pack expansion of the alignment-specifier yields alignas(int), alignas(short), an ill-formed list per the grammar in 9.12.1 [dcl.attr.grammar].
Proposed resolution (approved by CWG 2023-04-28):
Insert a new paragraph after 13.7.4 [temp.variadic] paragraph 9 as follows:
The instantiation of a sizeof... expression (7.6.2.5 [expr.sizeof]) produces an integral constant with value N.
The instantiation of an alignment-specifier with an ellipsis produces E1 E2 ... EN.