临时对象混淆

Bol*_*ger 7 c++ temporary

看看这段代码片段

struct S{ int i; int j;};

int main()
{
   assert(S().i ==  S().j) // is it guaranteed ?
}
Run Code Online (Sandbox Code Playgroud)

为什么?

Pra*_*rav 10

有保证吗?

是的,它是有保证的.的价值观S().iS().j0.()意味着值初始化.(这意味着ij将是零初始化因为S是不具有用户定义的默认构造函数的类)