16 Library introduction [library]

16.3 Definitions [definitions]

Note
:
[intro.defs] defines additional terms used elsewhere in this document.
— end note
 ]

16.3.1[defns.arbitrary.stream]arbitrary-positional stream

stream (described in [input.output]) that can seek to any integral position within the length of the stream
Note
:
Every arbitrary-positional stream is also a repositional stream.
— end note
 ]

16.3.2[defns.character]character

[strings], [localization], [input.output], and [re]⟩ object which, when treated sequentially, can represent text
Note
:
The term does not mean only char, char8_­t, char16_­t, char32_­t, and wchar_­t objects, but any value that can be represented by a type that provides the definitions specified in these Clauses.
— end note
 ]

16.3.3[defns.character.container]character container type

class or a type used to represent a character
Note
:
It is used for one of the template parameters of the string, iostream, and regular expression class templates.
— end note
 ]

16.3.4[defns.comparison]comparison function

operator function ([over.oper]) for any of the equality ([expr.eq]), relational ([expr.rel]), or three-way comparison ([expr.spaceship]) operators

16.3.5[defns.component]component

group of library entities directly related as members, parameters, or return types
Note
:
For example, the class template basic_­string and the non-member function templates that operate on strings are referred to as the string component.
— end note
 ]

16.3.6[defns.const.subexpr]constant subexpression

expression whose evaluation as subexpression of a conditional-expression CE ([expr.cond]) would not prevent CE from being a core constant expression

16.3.7[defns.deadlock]deadlock

situation wherein one or more threads are unable to continue execution because each is blocked waiting for one or more of the others to satisfy some condition

16.3.8[defns.default.behavior.impl]default behavior

⟨implementation⟩ specific behavior provided by the implementation, within the scope of the required behavior

16.3.9[defns.default.behavior.func]default behavior

⟨specification⟩ description of replacement function and handler function semantics

16.3.10[defns.direct-non-list-init]direct-non-list-initialization

16.3.11[defns.expression-equivalent]expression-equivalent

expressions that all have the same effects, either are all potentially-throwing ([except.spec]) or are all not potentially-throwing, and either are all constant subexpressions or are all not constant subexpressions
Example
:
For a value x of type int and a function f that accepts integer arguments, the expressions f(x + 2), f(2 + x), and f(1 + x + 1) are expression-equivalent.
— end example
 ]

16.3.12[defns.handler]handler function

non-reserved function whose definition may be provided by a C++ program
Note
:
A C++ program may designate a handler function at various points in its execution by supplying a pointer to the function when calling any of the library functions that install handler functions ([support]).
— end note
 ]

16.3.13[defns.order.ptr]implementation-defined strict total order over pointers

implementation-defined strict total ordering over all pointer values such that the ordering is consistent with the partial order imposed by the builtin operators <, >, <=, >=, and <=>

16.3.14[defns.iostream.templates]iostream class templates

templates, defined in [input.output], that take two template arguments
Note
:
The arguments are named charT and traits.
The argument charT is a character container class, and the argument traits is a class which defines additional characteristics and functions of the character type represented by charT necessary to implement the iostream class templates.
— end note
 ]

16.3.15[defns.modifier]modifier function

class member function other than a constructor, assignment operator, or destructor that alters the state of an object of the class

16.3.16[defns.move.assign]move assignment

assignment of an rvalue of some object type to a modifiable lvalue of the same type

16.3.17[defns.move.constr]move construction

direct-initialization of an object of some type with an rvalue of the same type

16.3.18[defns.ntcts]NTCTS

sequence of values that have character type that precede the terminating null character type value charT()

16.3.19[defns.observer]observer function

class member function that accesses the state of an object of the class but does not alter that state
Note
:
Observer functions are specified as const member functions ([class.this]).
— end note
 ]

16.3.20[defns.prog.def.spec]program-defined specialization

explicit template specialization or partial specialization that is not part of the C++ standard library and not defined by the implementation

16.3.21[defns.prog.def.type]program-defined type

non-closure class type or enumeration type that is not part of the C++ standard library and not defined by the implementation, or a closure type of a non-implementation-provided lambda expression, or an instantiation of a program-defined specialization
Note
:
Types defined by the implementation include extensions ([intro.compliance]) and internal types used by the library.
— end note
 ]

16.3.22[defns.projection]projection

⟨function object argument⟩ transformation that an algorithm applies before inspecting the values of elements
Example
:
std::pair<int, std::string_view> pairs[] = {{2, "foo"}, {1, "bar"}, {0, "baz"}};
std::ranges::sort(pairs, std::ranges::less{}, [](auto const& p) { return p.first; });
sorts the pairs in increasing order of their first members:
{{0, "baz"}, {1, "bar"}, {2, "foo"}}
— end example
 ]

16.3.23[defns.referenceable]referenceable type

type that is either an object type, a function type that does not have cv-qualifiers or a ref-qualifier, or a reference type
Note
:
The term describes a type to which a reference can be created, including reference types.
— end note
 ]

16.3.24[defns.replacement]replacement function

non-reserved function whose definition is provided by a C++ program
Note
:
Only one definition for such a function is in effect for the duration of the program's execution, as the result of creating the program ([lex.phases]) and resolving the definitions of all translation units ([basic.link]).
— end note
 ]

16.3.25[defns.repositional.stream]repositional stream

stream (described in [input.output]) that can seek to a position that was previously encountered

16.3.26[defns.required.behavior]required behavior

description of replacement function and handler function semantics applicable to both the behavior provided by the implementation and the behavior of any such function definition in the program
Note
:
If such a function defined in a C++ program fails to meet the required behavior when it executes, the behavior is undefined.
— end note
 ]

16.3.27[defns.reserved.function]reserved function

function, specified as part of the C++ standard library, that is defined by the implementation
Note
:
If a C++ program provides a definition for any reserved function, the results are undefined.
— end note
 ]

16.3.28[defns.stable]stable algorithm

algorithm that preserves, as appropriate to the particular algorithm, the order of elements
Note
:
Requirements for stable algorithms are given in [algorithm.stable].
— end note
 ]

16.3.29[defns.traits]traits class

class that encapsulates a set of types and functions necessary for class templates and function templates to manipulate objects of types for which they are instantiated

16.3.30[defns.valid]valid but unspecified state

value of an object that is not specified except that the object's invariants are met and operations on the object behave as specified for its type
Example
:
If an object x of type std​::​vector<int> is in a valid but unspecified state, x.empty() can be called unconditionally, and x.front() can be called only if x.empty() returns false.
— end example
 ]