4
我已阅读cppreference的Order of evalution,但我找不到涉及此情况的任何规则。这是否意味着没有先后顺序的关系或者我错过了什么?谢谢。成员访问操作符的lhs评估与其参数的副作用之间是否存在先后顺序关系?
下面的代码片段给出了一个例子。
#include <memory>
struct Foo {
void func(std::unique_ptr<Foo>) {}
};
int main() {
auto ptr = std::make_unique<Foo>();
ptr->func(std::move(ptr)); // Is this valid?
return 0;
}
从技术上讲,你只是引用[expr.call],只描述函数调用表达式。但是这个特定的后缀表达式恰好是'ptr-> func',所以它确实在表达式列表 – Cubbi
@Cubbi Oops中的唯一表达式之前进行了排序,是的,这是一个错误。虽然我确实记得看到原来的提案这样说。 –