denotes a one-dimensional array formed by a sequence of consecutive components
of a one-dimensional array. A slice
of a variable is a variable; a slice
of a constant is a constant;] a slice
of a value is a value.
Name Resolution Rules
of a slice
shall resolve to denote a one-dimensional array (after any implicit dereference).
denotes a one-dimensional array formed by the sequence of consecutive
components of the array denoted by the prefix
corresponding to the range of values of the index given by the discrete_range
For the evaluation of a slice
and the discrete_range
are evaluated in an arbitrary order.
is not a null slice
where the discrete_range
is a null range), then a check is made that the bounds of the discrete_range
belong to the index range of the array denoted by the prefix
Constraint_Error is raised if this check fails.
Reason: This is to ease implementation
of general-access-to-array. If slices were aliased, implementations would
need to store array dope with the access values, which is not always
desirable given access-to-incomplete types completed in a package body.
NOTE 2 For a one-dimensional array
A, the slice
A(N .. N) denotes an array that has only one component; its type is the
type of A. On the other hand, A(N) denotes a component of the array A
and has the corresponding component type.
Examples of slices:
Stars(1 .. 15) -- a slice of 15 characters (see 3.6.3)
Page(10 .. 10 + Size) -- a slice of 1 + Size components (see 3.6)
Page(L)(A .. B) -- a slice of the array Page(L) (see 3.6)
Stars(1 .. 0) -- a null slice (see 3.6.3)
My_Schedule(Weekday) -- bounds given by subtype (see 3.6.1 and 3.5.1)
Stars(5 .. 15)(K) -- same as Stars(K) (see 3.6.3)
-- provided that K is in 5 .. 15
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe