As I study different sections in the C++ standard ( Where do I find the current C or C++ standard documents? ), I would like to refer back to the “Terms and definitions”, §1.3.
However, the terms and definitions are provided in a form that I cannot adequately understand or interpret, and there is no explanation given in the text regarding how to interpret them.
Consider the very first term that is defined in the “Terms and definitions” section of the standard:
1.3.1 [defns.argument]
argument
actual argument
actual parameter
<function call expression> expression in the comma-separated list
bounded by the parentheses
- What does [
defns.argument] refer to? - What is the meaning and purpose of the lines
actual argumentandactual parameter? - Does
<function call expression>refer to a different “term or definition”? If so, it’s not defined in the “Terms and definitions” section – why not? If not, what does it refer to? (NOTE: I am not asking what “function call expression” means, because I already know; instead, I am asking how to read and interpret the “Terms and definitions” section of the C++ standard using this simple example.)
[defns.argument]is the section tag; it is intended to be used for editorial purposes as it is invariant under section renumbering (e.g. in response to insertion, removal or reordering of sections). It can also be used in referring to the standard, but section numbers (relative to a published version of the standard) are more concise.“actual argument” and “actual parameter” are aliases for the term “argument“. You will see below under 1.3.14 [defns.parameter] that “formal argument” and “formal parameter” are aliases for the term “parameter“.
The terms “actual argument” and “actual parameter” only appear in [defns.argument]; “formal argument” is described as an alias in 8.3.5p11, and “formal parameter” is used in approximately 13 places, a small fraction of the number of places where “parameter” is used.
The angle-bracketed term is the context in which this definition applies. For example, “argument” has a different meaning in the context of a “function call expression” to in the context of a “function-like macro“.