parts/3.terms.md

3. Terms and definitions

<!- SGM - removed "symbols and conventions from title and renumbered from [3.1.x] to [3.x] –>

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

TBD

3.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.3

access protection:

3.4

alignment

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

3.5

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.6

argument dependent lookup

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

3.7

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

3.8

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.9

diagnostic message

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

3.10

[erroneous behaviour]

well-defined behavior that the implementation is recommended to diagnose

3.11
erroneous value

value of an object not declared [[indeterminate]] and who’s value has not yet been set and can lead to erroneous behaviour if produced by an evaluation

3.12

explicit template specialization

a template specialization that defines a distinct implementation for the specified arguments

[3.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.14] friend{.ul}

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

[3.15] hidden friend{.ul}

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

3.16

Implementation

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

3.17

implementation-defined behaviour

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

3.18

implementation limit

capacity restriction imposed upon programs by the implementation.

3.19
indeterminate value

value of an object declared [[indeterminate]] and who’s value has not yet been set and can lead to undefined behaviour if produced by an evaluation

3.20
indeterminately sequenced

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

3.21
locale-specific behaviour

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

3.22
namespace
optionally-named entity that can contain scoped declarations

[ensure that this is put into clause 4 on general concepts]

3.23
object

region of data storage in the execution environment that has a type

3.24
overload

a function or operator sharing a name with others but distinguished by having a different namespace, parameter list, qualifier set or other relevant property

3.25
overload resolution

a mechanism for selecting the best function to call given a list of expressions that are to be the arguments of the call and a set of functions that can be called based on the context of the call.

[Need a clause 4 discussion?]

3.26
override

replace the implementation of a virtual (inheritable??) function in a derived class

3.27
pointer-like-type

set of types whose values depend upon the existence and value of another object, such as references, pointers, iterators and views

3.28

protected

member of a class that is visible only to the class itself, derived classes and friends

3.29

private

member of a class that is visible only to the class itself and friends

3.30

public

visible without restriction

3.31

storage duration

property of an object that defines the minimum potential lifetime of the storage containing the object, including static storage duration, thread storage duration, automatic storage duration and dynamic storage duration

3.32

standard library

[TBD] [Is this really necessary?]

3.33

template

a family of classes, functions or variables, or an alias for a family of types, or a concept

[also template specialization or explicit template specialization]

3.34

template specialization

a named template together with a set of arguments that produces a concrete instance of the entity

3.35

undefined behaviour

use of a non-portable or erroneous program construct or 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.36

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, such as the order in which the arguments to a function are evaluated

3.37

unspecified value

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

3.38

value

precise meaning of the contents of an object when interpreted as having a specific type

3.39

virtual

TBD

3.40

wide character

bit representation capable of representing any character in the current locale