// 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 foo(C b);

void test(C *P) {
	foo(*P);
}


struct C {
        int A, B;
        ~C() {}

	void operator^(C b) const { }
};

void test(C *P) {
        *P ^ *P;
}


--- 
+++ 
@@ -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);
 }
 
Simplify test, include problem analysis


git-svn-id: 0ff597fd157e6f4fc38580e8d64ab130330d2411@8747 91177308-0d34-0410-b5e6-96231b3b80d8
