【发布时间】:2016-06-07 21:12:50
【问题描述】:
有人可以引用 C++ 标准的相应段落,即在以下情况下未指定 std::string 构造和 foo() 调用的顺序:
std::string().append(foo());
我知道有 5.2.2.8 但它说明的是函数参数,而不是同一序列点之间的多个函数调用:
函数参数的求值顺序未指定
【问题讨论】:
-
5.2.2.5 "如果函数是非静态成员函数,函数的this参数([class.this])应该用指向调用对象的指针初始化,转换好像通过显式类型转换([expr.cast])。”似乎表明它被视为函数的隐含
this参数的来源,但我不会把钱花在我的阅读正确上,因为我没有彻底阅读这部分标准。
标签: c++ language-lawyer operator-precedence