我已从cppreference中读过Order of evalution,但我无法找到任何与此情况有关的规则。这是否意味着之前没有顺序关系,或者我错过了什么?感谢。
以下代码段给出了一个例子。
#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;
}
答案 0 :(得分:6)
在C ++之前1z 否,不要写这个。
发布C ++ 1z是的postfix-expression在表达式列表中的每个表达式和任何默认参数之前进行排序。
这里的Postfix表达式是函数调用,因此执行顺序类似于
> JSON.parse(JSON.stringify([ 1,,2 ]));
[ 1, null, 2 ]
这当然是正确的。