Within the specification of the package that declares a private type and before the end of the
corresponding full type declaration, a restriction applies to the use of a name that denotes the
private type or a subtype of the private type and, likewise, to the use of a name that denotes any
type or subtype that has a subcomponent of the private type. The only allowed occurrences of such
a name are in a deferred constant declaration, a type or subtype declaration, a subprogram
specification, or an entry declaration; moreover, occurrences within derived type definitions or
within simple expressions are not allowed.
7.4.2 Operations of a Private Type 7.4.2 (paragraph 2)7.4.2 Operations of a Private Type 7.4.2 (paragraph 2)7.4.2 Operations of a Private Type 7.4.2 (paragraph 2)
For a private type T, the basic operations also include the attributes T'BASE (see 3.3.3) and
T'SIZE (see 13.7.2). For an object A of a private type, the basic operations include the
attribute A'CONSTRAINED if the private type has discriminants (see 3.7.4), and in any case, the
attributes A'SIZE and A'ADDRESS (see 13.7.2).
7.4.2 Operations of a Private Type 7.4.2 (paragraph 10)7.4.2 Operations of a Private Type 7.4.2 (paragraph 10)7.4.2 Operations of a Private Type 7.4.2 (paragraph 10)
T'CONSTRAINED Yields the value FALSE if T denotes an unconstrained nonformal private type with
discriminants; also yields the value FALSE if T denotes a generic formal private
type, and the associated actual subtype is either an unconstrained type with
discriminants or an unconstrained array type; yields the value TRUE otherwise. The
value of this attribute is of the predefined type BOOLEAN.