aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.mike/p710.C
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.old-deja/g++.mike/p710.C')
-rw-r--r--gcc/testsuite/g++.old-deja/g++.mike/p710.C43
1 files changed, 43 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p710.C b/gcc/testsuite/g++.old-deja/g++.mike/p710.C
new file mode 100644
index 00000000000..56f09b1a67e
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.mike/p710.C
@@ -0,0 +1,43 @@
+// Build don't link:
+// GROUPS passed delete
+/*
+ Bug Id:
+ PRMS Id: p0000710
+ Bug is : overloading operator delete in class def not allowed
+*/
+
+/*
+ In addition to this bug, the compiler permits overloading operator
+ delete in the class definition. This is verboten, and should be
+ caught by a regression suite. In other words, the following is also a
+ bug that's not caught:
+*/
+
+
+#include <stdlib.h>
+
+extern "C"
+{
+ int printf(const char*, ...);
+};
+
+
+
+class B
+{
+ public:
+ int x;
+ virtual ~B() {}
+ void operator delete(void*,size_t s)
+ {// ERROR - previous declaration as.*
+ printf("B::delete() %d\n",s);
+ }
+ void operator delete(void*){} // ERROR - .B::operator.*overloaded
+};
+
+main()
+{
+ B* p = new B;
+ delete p;
+ return 0;
+}