summaryrefslogtreecommitdiff
path: root/test/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp')
-rw-r--r--test/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/test/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp b/test/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp
index 9e348b6e13..7c4e23f40f 100644
--- a/test/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp
+++ b/test/C++Frontend/2003-09-29-ArgumentNumberMismatch.cpp
@@ -1,11 +1,15 @@
+// Non-POD classes cannot be passed into a function by component, because their
+// dtors must be run. Instead, pass them in by reference. The C++ front-end
+// was mistakenly "thinking" that 'foo' took a structure by component.
+
struct C {
int A, B;
~C() {}
-
- void operator^(C b) const { }
};
+void foo(C b);
+
void test(C *P) {
- *P ^ *P;
+ foo(*P);
}