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

2024-11-11


2064. Conflicting specifications for dependent decltype-specifiers

Section: 13.6  [temp.type]     Status: CD4     Submitter: Richard Smith     Date: 2014-12-27

[Adopted at the February, 2016 meeting.]

According to 13.8.3.2 [temp.dep.type] paragraph 9, a type is dependent if it is

denoted by decltype(expression), where expression is type-dependent (13.8.3.3 [temp.dep.expr]).

However, 13.6 [temp.type] paragraph 2 says,

If an expression e involves a template parameter, decltype(e) denotes a unique dependent type. Two such decltype-specifiers refer to the same type only if their expressions are equivalent (13.7.7.2 [temp.over.link]). [Note: however, it may be aliased, e.g., by a typedef-name. —end note]

These seem to be in need of reconciliation.

Proposed resolution (January, 2016):

Change 13.6 [temp.type] paragraph 2 as follows:

If an expression e involves a template parameter is type-dependent (13.8.3.3 [temp.dep.expr]), decltype(e) denotes a unique dependent type. Two such decltype-specifiers refer to the same type only if their expressions are equivalent (13.7.7.2 [temp.over.link]). [Note: however, it such a type may be aliased, e.g., by a typedef-name. —end note]