valarray::operator[]
specification in [valarray.access]Section: 29.6.2.4 [valarray.access] Status: NAD Editorial Submitter: Daniel Krügler Opened: 2007-08-27 Last modified: 2016-01-28
Priority: Not Prioritized
View all other issues in [valarray.access].
View all issues with NAD Editorial status.
Discussion:
Since the return type of valarray
's operator[] const
overload has been
changed to const T&
as described in 389 several paragraphs of
the section 29.6.2.4 [valarray.access] are now
incompletely
specified, because many requirements and guarantees should now also
apply to the const overload. Most notably, the address and reference
guarantees should be extended to the const overload case.
Proposed resolution:
Change 29.6.2.4 [valarray.access]:
-1-
When applied to a constant array, the subscript operator returns a reference to the corresponding element of the array. When applied to a non-constant array, tThe subscript operator returns a reference to the corresponding element of the array.-3- The expression
&a[i+j] == &a[i] + j
evaluates astrue
for allsize_t i
andsize_t j
such thati+j
is less than the length of thenon-constantarraya
.-4- Likewise, the expression
&a[i] != &b[j]
evaluates astrue
for any twonon-constantarraysa
andb
and for anysize_t i
andsize_t j
such thati
is less than the length ofa
andj
is less than the length ofb
. This property indicates an absence of aliasing and may be used to advantage by optimizing compilers.281)-5- The reference returned by the subscript operator for an
non-constantarray is guaranteed to be valid until the member functionresize(size_t, T)
(26.5.2.7) is called for that array or until the lifetime of that array ends, whichever happens first.