Richard Heathfield said:
Phil Carmody said:
I can find no such reference in the Standard, after checking every
single occurrence of "pass". If you have a specific citation in
mind, please let me know what it is so that I can look at it more
closely.
[...]
Phil recently posted several relevant quotations from the standard.
He posted snippets of text, taken out of context, with no section
numbers, so it was rather difficult to confirm the quotations. (In at
least one case, the term "pass" wasn't being used to refer to passing
an argument to a C function or macro; see the description of the
system() function, 7.20.4.6p2.)
But taking his list as guidance, and searching n1256 for the word
"pass", I find the following cases where the term is used rather
loosely to refer to some entity being "passed", when what's actually
passed is a pointer to that entity.
First, a footnote that supports the opposite intent, from 6.5.2.2
(it's footnote 81 in N1256; I think it's been quoted here before):
A function may change the values of its parameters, but these
changes cannot affect the values of the arguments. On the other
hand, it is possible to pass a pointer to an object, and the
function may change the value of the object pointed to. A
parameter declared to have array or function type is adjusted to
have a pointer type as described in 6.9.1.
On with the list of places where the term is used more loosely (I
haven't checked this against the list Phil posted):
6.9.1p14 (non-normative):
EXAMPLE 2 To pass one function to another, one might say
int f(void);
/* ... */
g(f);
7.11.1.1p3:
Other implementation-defined strings may be passed as the second
argument to setlocale.
This is also mentioned in J.3.12.
7.15.1.4p6 (non-normative):
EXAMPLE 1 The function f1 gathers into an array a list of
arguments that are pointers to strings (but not more than
MAXARGS arguments), then passes the array as a single argument
to function f2.
7.15.1.4p7 (non-normative):
EXAMPLE 2 The function f3 is similar, but saves the status of the
variable argument list after the indicated number of arguments;
after f2 has been called once with the whole list, the trailing
part of the list is gathered again and passed to function f4.
7.20.5p4,p5 (describing search and sorting utilities):
When the same objects (consisting of size bytes, irrespective of
their current positions in the array) are passed more than once to
the comparison function, the results shall be consistent with one
another.
A sequence point occurs immediately before and immediately after
each call to the comparison function, and also between any call to
the comparison function and any movement of the objects passed as
arguments to that call.
The latter is also mentioned in Annex C, Sequence points.
The above is the result from searching for every occurrence of "pass"
in n1256.pdf. I believe the list is complete, but I'm not certain.
This is essentially 5 distinct cases, only 2 of which are in normative
text. Personally, I'd mark this down to minor sloppiness, not to any
intent to expand the meaning of the word "pass". (I don't mean to
imply that Phil implied any such intent, nor do I mean to denigrate
the members of the committee.)