A.18.11 The Generic Package Containers.Indefinite_Vectors
{
AI95-00302-03}
The language-defined generic package Containers.Indefinite_Vectors provides
a private type Vector and a set of operations. It provides the same operations
as the package Containers.Vectors (see
A.18.2),
with the difference that the generic formal Element_Type is indefinite.
Static Semantics
{
AI95-00302-03}
{
AI05-0092-1}
The declaration of the generic library package Containers.Indefinite_Vectors
has the same contents and semantics as Containers.Vectors except:
The generic formal Element_Type is indefinite.
The procedures with
the profiles:
procedure Insert (Container : in out Vector;
Before : in Extended_Index;
Count : in Count_Type := 1);
procedure Insert (Container : in out Vector;
Before : in Cursor;
Position : out Cursor;
Count : in Count_Type := 1);
are omitted.
Discussion: These procedures are omitted
because there is no way to create a default-initialized object of an
indefinite type. Note that Insert_Space can be used instead of this routine
in most cases. Omitting the routine completely allows any problems to
be diagnosed by the compiler when converting from a definite to indefinite
vector.
The actual Element parameter of access subprogram
Process of Update_Element may be constrained even if Element_Type is
unconstrained.
{
AI12-0035-1}
The operations "&", Append, Insert, Prepend, Replace_Element,
and To_Vector that have a formal parameter of type Element_Type perform
indefinite insertion (see
A.18).
Extensions to Ada 95
{
AI95-00302-03}
The generic package Containers.Indefinite_Vectors
is new.
Inconsistencies With Ada 2012
{
AI12-0035-1}
Corrigendum: Defined some routines to “perform
indefinite insertion”. This could mean that some calls to those
routines would now raise Program_Error where they previously worked.
However, this is extremely unlikely, as it would require that the package
was not implemented in Ada (an Ada
allocator
would raise Program_Error in these circumstances), and that a program
inserted a more nested tagged type (or access discriminant) into a container,
and then used that object before its type or discriminant went out of
scope. All known implementations are implemented in Ada, so we believe
there is no practical incompatibility. As such, we mention this only
for completeness.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe