考虑:
int f () {
static int i = 0;
return i++;
}
struct Test {
int a, b;
Test () : a(f()), b(f()) {}
};
Test t;
Run Code Online (Sandbox Code Playgroud)
我知道a之前b由于其声明的顺序而被初始化struct.
我也知道这两次打电话都没有f参加g(f(), f()).
所以我想知道是否保证t.a == 0和t.b == 1?
c++ operator-precedence undefined-behavior initialization-order language-lawyer
c++ ×1