AI22-0033-1

!standard 1.3.1(6/5)                                        23-05-26  AI22-0033-1/02

!standard 1.3.3(1/5)

!class presentation 23-03-23

!status work item 23-03-23

!status received 23-03-23

!priority Very_Low

!difficulty Easy

!subject Additional terms and definitions

!summary

Add additional terms as needed.

!issue

A number of important terms are missing from the Terms and Definitions sections. We should add more, and possibly reorganize some that we already have.

!recommendation

(See Summary.)

!wording

Add after 1.3.1(6/5):

allocator. creator of an access value that designates an object.

Add after 1.3.1(21/5):

denotes.  indicates the name (of an entity).

derivation class.  set of a root type and all types derived from it.

Add after 1.3.1(73/5):

statically denotes.

[I think finding a plain English summary of the formal definition in 4.9(14-17) is beyond me.]

statically names.

[I think finding a plain English summary of the formal definition in 4.9(17.1/5-17.5/5) is beyond me.  AI12-0368's difference between name and denote is too subtle for me! - the first defintion of "denote" that I found said "gives the name of".]

Add after 1.3.2(1/5):

homograph.  declaration with the same name and a type conformant parameter (and result) profile.

overloaded subprogram.  subprogram with a multiply defined name, but which definition is applicable being distinguishable by the parameter (and result) profiles.

Add after 1.3.3(1/5):

child unit.  library unit (logically) occurring within the declarative region of its parent library unit.

Add after 1.3.3(15/5):

instantiation.  creation of an actual package or subsystem from a (template) generic unit.

Add after 1.3.3(23/5):

operative constituent. name or expression used in the evaluation of another name or expression.

Add after 1.3.3(36/5):

subsystem. root library unit, together with its descendants.

[10.1(3) uses the rather clumsy "children and grandchildren and so on", maybe considering that the term "descendants" is only applicable to types.  But 10.1.1(11 & 12) is quite happy talking about library units having descendants.]

Add before 1.3.5(1/5):

bounded error.  error that causes behavior that is unpredictable but within certain bounds, and is not generally predictable.

Add after 1.3.5(1/5):

erroneous execution.  totally unpredictable behavior, caused by an error that is not generally detectable.

!discussion

We consider the Terms and Definitions section the place to define short, descriptive definitions. The lengthy, formal definitions are placed in the body of the Reference Manual as it would be impossible to meet the rules on writing definitions (see below) for the formal definitions. More on this can be found in the AARM Notes for subclause 1.3.

Terms and Definitions should be defined as required by the JTC1 Directives, Part 2. Some highlights for this purpose:

---

A number of candidate terms were noted during the FDIS updates. We did not add more of these at the last minute in fear of making trouble for ourselves; we limited ourselves to terms/definitions that needed to be fixed because of ISO comments.

Terms that are mentioned in existing definitions or notes but not defined:

Other important terms that probably ought to be defined include:[a][b]

and a number of visibility terms:

Other candidates can be found by skimming through the index (all defined terms should appear in the index).

If the "other constructs" category gets too large, it might make sense to splitting it into a "units" and "other constructs" categories.

!ACATS test

This is purely additional informative material, so no tests are needed.

!appendix

[a]Root type of a class-wide type

[b]subtype predicate?