📄 elide1.c
字号:
// { dg-do run }// Test that the destructor for a temporary passed by value isn't run// until end of full-expression, as per [class.copy]:// Whenever a temporary class object is copied using a copy constructor,// and this object and the copy have the same cv-unqualified type, an// implementation is permitted to treat the original and the copy as two// different ways of referring to the same object and not perform a copy// at all, even if the class copy constructor or destructor have side// effects.... In these cases, the// object is destroyed at the later of times when the original and the// copy would have been destroyed without the optimization.// Here, the temporary would be destroyed later than the parm, so either we// must suppress the optimization in this case or destroy value parms in the// caller.int d;struct A { A () { } A (const A&) { } ~A() { ++d; }};void f (A a) { }int main (){ int r; f (A ()), r = d; if (r < d && d) return 0; else return 1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -