📄 copy8.c
字号:
// { dg-do run }// GROUPS passed copy-ctors/*This report is for GCC 2.3.3 running on a Sun/4. The bug is that whena class instance is passed-by-value, GCC does not correctly copy the value.At the end of this report is an example program that demonstrates the bug. It should print: construct A('x') copy A('x') destruct A('x') destruct A('x')and in fact does for IBM's xlC C++. However, for GCC 2.3.3, it failsto print the second line ["copy A('x')"], which indicates that it failedto call the copy-constructor for class A when it should have. Below is a typescript that lists the program, shows how I compiled it, and shows the incorrect output.*/extern "C" int printf (const char *, ...);extern "C" void exit (int);int count = 0;voiddie (int x){ if (x != ++count) { printf ("FAIL\n"); exit (1); }}class A { // Class with explicit & instrumented copy-constructor and destructor.public: const char * id; A( const char * id1 ) : id(id1) { die (1); } // Copy constructor A( const A& a ) : id(a.id) { die (2); } // Destructor ~A() { count++; if (count != 3 && count != 4) die (-1); }};class X { // Class without explicit copy-constructorprivate: A a;public: X( const char * id ) : a(id) {}};void Func( X x ) { // Function with call-by-value argument}intmain() { X x("x"); // Construct instance of x. // The next line should call the copy-constructor for X since x is // being passed by value. For GCC 2.3.3 on a Sun/4, it does not. Func(x); printf ("PASS\n"); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -