Title
Zero-element array of runtime bound
Status
nad
Section
9.3.4.5 [dcl.array]
Submitter
USA

Created on 2013-09-24.00:00:00 last changed 123 months ago

Messages

Date: 2014-02-15.00:00:00

Rationale (February, 2014):

The specification was removed from the WP and moved into a Technical Specification.

Date: 2013-09-15.00:00:00

Proposed resolution (September, 2013):

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

  2. ...The expression is erroneous if:

    • its value before converting to std::size_t or, in the case of an expression of class type, before application of the second standard conversion (12.2.4.2.3 [over.ics.user]) is less than or equal to zero;

    • ...

    If the expression, after converting to std::size_t, is a core constant expression and the expression is erroneous or its value is zero, the program is ill-formed. If the expression... std::bad_array_length (_N3690_.18.6.2.2 [bad.array.length]) is thrown. An object of array type If N is zero, an object of array type has no elements. Otherwise, it contains a contiguously allocated non-empty set of N subobjects of type T. The type...

Date: 2013-09-24.00:00:00
N3690 comment USĀ 9

C-style variable-length arrays (which have been widely implemented as extensions to C++) permit a zero-length array. Similarly, arrays created by new-expressions can have a length of zero. Forbidding zero-length arrays of runtime bound is a gratuitous incompatibility.

History
Date User Action Args
2014-03-03 00:00:00adminsetmessages: + msg4977
2014-03-03 00:00:00adminsetstatus: ready -> nad
2013-10-14 00:00:00adminsetmessages: + msg4590
2013-09-24 00:00:00admincreate