Created on 2021-01-29.00:00:00 last changed 1 month ago
According to 9.2.9.6.1 [dcl.spec.auto.general] paragraph 3,
The placeholder type can appear with a function declarator in the decl-specifier-seq, type-specifier-seq, conversion-function-id, or trailing-return-type, in any context where such a declarator is valid. If the function declarator includes a trailing-return-type (9.3.4.6 [dcl.fct]), that trailing-return-type specifies the declared return type of the function. Otherwise, the function declarator shall declare a function.
This wording disallows a declaration like
int f(); auto (*fp)()=f;
The requirement to declare a function was introduced by the resolution of issue 1892.
Suggested resolution:
Change 9.2.9.6.1 [dcl.spec.auto.general] paragraph 3 as follows:
The placeholder type can appear with a function declarator in the decl-specifier-seq, type-specifier-seq, conversion-function-id, or trailing-return-type,in any context where such a declarator is validif the function declarator includes a trailing-return-type T (9.3.4.6 [dcl.fct]) or declares a function.If the function declarator includes a trailing-return-type (9.3.4.6 [dcl.fct]), that trailing-return-type specifiesIn the former case, T is the declared return type of the function.Otherwise, the function declarator shall declare a function.If the declared return type ofthea function contains a placeholder type, the return type of the function is deduced from non-discarded return statements, if any, in the body of the function (8.5.2 [stmt.if]).
History | |||
---|---|---|---|
Date | User | Action | Args |
2021-01-29 00:00:00 | admin | create |