运算符+序列中的临时生命周期

Tal*_*don 5 c++

可能重复:
C++中临时的保证寿命?
临时的一生

当从重载operator+方法返回时,我有一个关于临时对象的生命周期的快速问题.例如,如果表达式......

a = b + c + d + e
Run Code Online (Sandbox Code Playgroud)

...是通过重载operator+方法返回临时对象来评估的,是b + c整个表达式的子表达式返回的临时范围?

由于g ++似乎保留在所有临时值上,而整个表达式都在范围内,因此可以在a =赋值期间对这些值进行延迟评估.

有人可以确认是否所有C++实现都能保证这种行为?

Jer*_*fin 6

是的,在通常的情况下:"临时对象被破坏,作为评估全表达式(1.9)的最后一步,(词法上)包含创建它们的点." (§12.2/ 3).

有几个例外,但它们不适用于此.