elide1.c

来自「this is a gcc file, you can download it 」· C语言 代码 · 共 39 行

C
39
字号
// { 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 + =
减小字号Ctrl + -
显示快捷键?