在C++标准中临时绑定到成员生命周期语句的重点是什么?

sha*_*oth 8 c++ object-lifetime

这个问题的用户愉快塔尔引用C++ 03标准的部分12.2.5:临时结合到在一个构造的构造函数初始化程序(12.6.2)的参考构件持续直到构造退出.

这怎么可能有用呢?我的意思是一旦构造函数退出临时被破坏,但引用仍然绑定 - 现在已经被破坏的对象.

如果在外部对象的整个生命周期中仍然存在悬空引用,那么如何仔细指定临时生命周期又有什么意义呢?在哪种情况下这种行为有用吗?

Fre*_*urk 8

将引用成员绑定到死对象是没有用的,但是明确指出绑定到引用时的"正常"临时生命周期扩展在这种情况下不适用是有用的.

它还指定了临时生命周期扩展,它特别适用于ctor初始化器:它延伸到ctor的末尾,而不是在ctor体执行之前死亡.除了"巧妙"类之外,这一点没有用,它的全部意义在于执行ctor,并且正确地避免了这种类型的(ab)使用.

我知道没有真正的世界后者的例子,但它给我的印象类似于具有析构函数抛出异常默认爆料称,在他们的一生"聪明"的类和如何使用它们.这确实有现实的用途和想出了在如何处理dtors的默认语义的C++ 0x的讨论.