C ++函数调用表达式吗?

时间:2016-07-04 08:48:39

标签: c++ function expression call

一个函数产生一个结果,可以作为另一个函数参数的参数。所以,是一个函数调用,如:

from ast import literal_eval
a = b'\x00\x01'
ra = repr(a)
assert literal_eval(ra) == eval(ra) == a # no error

被视为"表达"? 感谢。

2 个答案:

答案 0 :(得分:9)

C ++标准(N3376,§5.1)将表达式指定为:

  

表达式是指定计算的运算符和操作数序列。表达式可能会导致值,并可能导致副作用。

进一步在同一部分(§5.2.2):

  

函数调用是一个后缀表达式,后跟括号,其中包含一个可能为空的逗号分隔的表达式列表,这些表达式构成了函数的参数。

简而言之,是的。

答案 1 :(得分:2)

根据ISO / IEC 14882:2014的5.2.2 [expr.call]第1段,函数调用是[后缀]表达式:

  

函数调用是一个后缀表达式,后跟括号,其中包含一个可能为空的逗号分隔的initializer-clause列表,这些子句构成函数的参数。 ...