jeffc said:
The point is that the syntax looks different, but not so different that you
can tell them apart. Would you deny that b and c are arguments?
Well, I call the operands. They're not necessarily function arguments.
In the
abstract, operators have much in common with function, regardless of
implementation.
In the abstract they have nothing in common. The only parallel I can see
that they might be implemented by an underlying function. Other than that
the only thing the operands to + have and function arguments do is that they
are both expressions.
I know what I intend, and apparently you don't. Between us, I'd have to be
considered the expert.
What you intend doesn't add up to a pile of beans. I thought you were talking
about the language intent (as proposed by the creator, the standards committee
or the implementors).
Again, not bothering to answer the question in context, as you enjoy doing
so much. The context of the question did not have to do with functions.
The context of the question was the significance of parentheses.
Well since you didn't ask that question, it's hard to imagine what you expect
the answer context to be.
As I said, the language syntax, which is clearly specified tells you what the
expressions mean. The semantics of sizeof (and the underlying type and
value of s) tell you the value of the expression. As we've pointed out, a
left paren after the keyword sizeof can mean one of two things.
1. It can if followed by a typeid, means that the sizeof is applied to the typeid.
2. If the next thing is not a typeid, then it must be part of a unary expression.
3. If it is none of these the program is ill formed.
Rule 1 applies to the first example
Rule 2 applies to the third and forth.
Rule 3 applies to your second.
It's a simple process of applying the expression parsing rules from section 5 of
the standard.
You can create other figments of your imagination such as function calls or whatever
but the language rules are clear and simple here.