Title
Equivalence of pack-index-specifiers
Status
tentatively ready
Section
13.6 [temp.type]
Submitter
Corentin Jabot

Created on 2025-04-14.00:00:00 last changed 3 weeks ago

Messages

Date: 2026-05-20.07:01:56

Proposed resolution (approved by CWG 2026-05-19):

Change and merge in 13.6 [temp.type] paragraph 5 and paragraph 6 as follows:

For a type template parameter pack T, T...[constant-expression] denotes a unique dependent type. If the constant-expression of a pack-index-specifier is value-dependent, two Two such pack-index-specifiers (9.2.9.4 [dcl.type.pack.index]) refer to the same type only if
  • their typedef-names refer to the same template parameter pack and
  • if neither of their constant-expressions is value-dependent, then they have the same value, otherwise their constant-expressions are equivalent (13.7.7.2 [temp.over.link]).
Otherwise, two such pack-index-specifier s refer to the same type only if their indexes have the same value.
Date: 2025-11-06.23:04:52

(From submission #700.)

Subclause 13.6 [temp.type] paragraph 5 and paragraph 6 specify:

For a type template parameter pack T, T...[constant-expression] denotes a unique dependent type.

If the constant-expression of a pack-index-specifier is value-dependent, two such pack-index-specifiers refer to the same type only if their constant-expressions are equivalent (13.7.7.2 [temp.over.link]). Otherwise, two such pack-index-specifier s refer to the same type only if their indexes have the same value.

That seems to imply that pack-index-specifiers referring to different template parameter packs could be equivalent.

History
Date User Action Args
2026-05-19 17:41:16adminsetstatus: open -> tentatively ready
2025-11-06 23:04:52adminsetmessages: + msg8359
2025-04-14 00:00:00admincreate