parts/3.terms.md

3. Terms and definitions, symbols and conventions

3.1 Terms and definitions

For the purposes of this document, the terms and definitions given in ISO/IEC 2382, in TR 24772–1, in 14882:2014 and the following apply. Other terms are defined where they appear in italic type.

The following terms are in alphabetical order, with general topics referencing the relevant specific terms.

3.1.1

TBD

3.1.2

access:

An execution-time action, to read or modify the value of an object.

Note 1: Where only one of two actions is meant, read or modify. Modify includes the case where the new value being stored is the same as the previous value. Expressions that are not evaluated do not access objects

3.1.3

access protection

ADL

argument dependent lookup

alignment
requirement that objects of a particular type be located on storage boundaries with addresses that are particular multiples of a byte address

3.1.3

argument
the expression in the comma-separated list bounded by the parentheses in a function call expression, or a sequence of preprocessing tokens in the comma-separated list bounded by the parentheses in a function-like macro invocation

Note 1: Also called actual argument

Note 2: An argument replaces a formal parameter as the call is realized.

3.??

argument dependent lookup

lookup that finds additional overloads from the namespaces of the types of the arguments used in unqualified function calls

3.1.4

behaviour
an external appearance or action [recommend removal - standard comp sci term]

3.1.5

bit
the unit of data storage in the execution environment large enough to hold an object that may have one of two values

Note: It need not be possible to express the address of each individual bit of an object [recommend removal - standard comp sci term]

3.1.6

byte
the addressable unit of data storage large enough to hold any member of the basic character set of the execution environment

Note: It is possible to express the address of each individual byte of an object uniquely. A byte is composed of a contiguous sequence of bits, the number of which is implementation-defined. The least significant bit is called the low-order bit; the most significant bit is called the high-order bit. [recommend removal - standard comp sci term]

3.1.7

character
abstract member of a set of elements used for the organization, control, or representation of data and ideally when treated sequentially represents text

correctly rounded result
representation in the result format that is nearest in value, subject to the current rounding mode, to what the result would be given unlimited range and precision

3.1.8

class
a user-defined type declared with the class-key ‘class’ or ‘struct’ {.ul}

3.1.9

concrete

Recommend deletion, only used in 6.40 Templates and Generics

3.1.10

diagnostic message

informational message that is either an error or warning about an issue detected by the implementation

[3.1.11]{.ul}**

dynamic dispatch

[recommend removal] {.ul}

3.1.12

encapsulation

recommend removal - all usages in the document satisfy standard English use of encapsulate

3.1.13

formal parameter

object declared as part of a function declaration or definition that acquires a value on entry to the function, or an identifier from the comma-separated list bounded by the parentheses immediately following the macro name in a function-like macro definition.

[3.1.xx] friend{.ul}

function or class that can access the private and protected members of a specific class

[3.1.xx] hidden friend{.ul}

friend function that is only declared within a class or class template definition and hence is only found by ADL

3.1.xx

Implementation

toolchain that is used to build and support the execution of the C++ program

3.1.15

implementation-defined behaviour

behaviour, for a well-formed program construct and correct data, that depends on the implementation and that each implementation documents

3.1.16
implementation-defined value

unspecified value where each implementation documents how the choice for the value is selected. [recommend removal - term not use other than note(s)]

3.1.17

implementation limit

restriction imposed upon programs by the implementation.

3.1.18

indeterminate value

unspecified value or a trap representation

3.1.19
indeterminately sequenced

sequenced in a way that one of two evaluations will be executed before the other but in an unspecified order

3.1.20

Inheritance

TBD [recommend removal - well understood in OO languages]

3.1.21

language type

see block-structured language, comb-structured language (Non-responsive) [recommended removal - inadequate relevancy]

3.1.21

locale-specific behaviour

behaviour that depends on local conventions of nationality, culture, and language that each implementation documents

3.1.22

memory location

an object of scalar type or a maximal sequence of adjacent bit-fields all having nonzero width [recommend removal and move to 6.3]

3.23
multibyte character

sequence of one or more bytes representing a member of the extended character set of either the source or the execution environment.

Note: The extended character set is a superset of the basic character set. [Recommend removal - not used]

3.1.24
namespace
optionally-named entity that can contain scoped declarations of any kind of entity [ensure that this is put into clause 4 on general concepts]

3.25

object

region of data storage in the execution environment, the contents of which can represent values and that can be interpreted as having a particular type

3.1.26

overload

the use of the same symbol name to denote different entities

3.1.27

override

replacing the implementation of an inheritable function in a derived class

3.1.28

parameter

(rewrite) See actual argument, argument, formal parameter (Non-responsive, needs definition)

[Remove - obvious]

3.1.29

{Protected]{.ul}

visible only to itself and derived classes and friends

3.1.30

private

visible only to the class itself and friends

3.1.31

Public

visible without restriction

3.1.33

recommended practice

specification that is strongly recommended as being in keeping with the intent of the language standard, but that may be impractical for some implementations

[recommend removal - not used] **3.1.34((

runtime-constraint

a constraint imposed on an executing program [TBD - needs refinement] [continue from here - 7 August 2023]

3.1.35

single-byte character

bit representation that fits in a byte (binary representation?)

3.1.36

static

TBD

**3.1.37

STL

TBD

3.1.38

standard library

[TBD]

3.1.39

template

TBD

3.1.40

trap representation

object representation that need not represent a value of the object type

3.1.41

undefined behaviour

use of a non-portable or erroneous program construct or of erroneous data, for which the language standard imposes no requirements

Note: Undefined behaviour ranges from ignoring the situation completely with unpredictable results, to behaving during translation or program execution in a documented manner characteristic of the environment (with or without the issuance of a diagnostic message), to terminating a translation or execution (with the issuance of a diagnostic message). An example of, undefined behaviour is the behaviour on integer overflow.

3.1.42

unspecified behaviour

use of an unspecified value, or other behaviour where the language standard provides two or more possibilities and imposes no further requirements on which is chosen in any instance

Note: For example, unspecified behaviour is the order in which the arguments to a function are evaluated.

3.1.43

unspecified value

valid value of the relevant type where the language standard imposes no requirements on which value is chosen in any instance

Note: An unspecified value cannot be a trap representation.

3.1.44

value

precise meaning of the contents of an object when interpreted as having a specific type (specific type or specified type?)

Note: See implementation-defined value, indeterminate value, unspecified value, trap representation

3.1.45

virtual

TBD

3.1.45

wide character

bit representation capable of representing any character in the current locale