Date
2022-09-25.18:08:42
Message id
6590

Content

Proposed resolution, May, 2021:

  1. Change 9.3.4.5 [dcl.array] paragraph 4 as follows:

  2. U is called the array element type; this type shall not be a placeholder type (9.2.9.7 [dcl.spec.auto]), a reference type, a function type, an array of unknown bound, or cv void.
  3. Change 9.3.4.6 [dcl.fct] paragraph 11 as follows:

  4. The return type shall be a non-array object type, a reference type, or cv void. [Note: An array of placeholder type is considered an array type. —end note]
  5. Change 9.2.9.7.2 [dcl.type.auto.deduct] paragraph 2 as follows:

  6. A type T containing a placeholder type, and a corresponding initializer E, are determined as follows:

    • for a non-discarded return statement that occurs in a function declared with a return type that contains a placeholder type, T is the declared return type and E is the operand of the return statement. If the return statement has no operand, then E is void();

    • for a variable declared with a type that contains a placeholder type, T is the declared type of the variable and E is the initializer. If the initialization is direct-list-initialization, the initializer shall be a braced-init-list containing only a single assignment-expression and E is the assignment-expression;

    • for a non-type template parameter declared with a type that contains a placeholder type, T is the declared type of the non-type template parameter and E is the corresponding template argument.

    T shall not be an array type. In the case of a return statement with no operand...