<!- 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