This is an unofficial snapshot of the ISO/IEC JTC1 SC22 WG21 Core Issues List revision 118e. See http://www.open-std.org/jtc1/sc22/wg21/ for the official list.
2025-11-05
Because the restriction that a trailing-return-type can appear only in a declaration with “the single type-specifier auto” (9.3.4.6 [dcl.fct] paragraph 2) is a semantic, not a syntactic, restriction, it does not influence disambiguation, which is “purely syntactic” (8.11 [stmt.ambig] paragraph 3). Consequently, some previously unambiguous expressions are now ambiguous. For example:
struct A {
A(int *);
A *operator()(void);
int B;
};
int *p;
typedef struct BB { int C[2]; } *B, C;
void foo() {
// The following line becomes invalid under C++0x:
A (p)()->B; // ill-formed function declaration
// In the following,
// - B()->C is either type-id or class member access expression
// - B()->C[1] is either type-id or subscripting expression
// N3126 subclause 8.2 [dcl.ambig.res] does not mention an ambiguity
// with these forms of expression
A a(B ()->C); // function declaration or object declaration
sizeof(B ()->C[1]); // sizeof(type-id) or sizeof on an expression
}
Notes from the March, 2011 meeting:
CWG agreed that the presence of auto should be considered in disambiguation, even though it is formally handled semantically rather than syntactically.
CWG 2023-05-12
Both 8.11 [stmt.ambig] and 9.3.3 [dcl.ambig.res] need to be adjusted.
CWG 2023-06-13
Addressed by paper P2915R0, approved in June, 2023.