【发布时间】:2015-10-15 18:19:30
【问题描述】:
众所周知(尽管不够广泛>.puts()s 可以按任意顺序出现,作为任意编译器选择:
#include <cstdio>
int Function1() {
std::puts("Function1");
return 1;
}
int Function2() {
std::puts("Function2");
return 2;
}
int Add(int x, int y) {
return x + y;
}
int main() {
return Add(Function1(), Function2());
}
但是,这是否也适用于 .、.*、-> 或 ->* 运算符左侧的 this 的求值?换句话说,puts()下面的顺序也未指定吗?
#include <cstdio>
struct Struct {
Struct() { std::puts("Struct::Struct"); }
int Member(int x) const { return x * 2; }
};
int Function() {
std::puts("Function");
return 14;
}
int main() {
return Struct().Member(Function());
}
【问题讨论】:
-
根据en.cppreference.com/w/cpp/language/eval_order,两种情况下的顺序都是未指定。
标签: c++ parameter-passing this