Index: src/tests/.expect/memberCtors.txt
===================================================================
--- src/tests/.expect/memberCtors.txt	(revision 992386182ecafc440e6db7bddd4e6a47aa0b082a)
+++ src/tests/.expect/memberCtors.txt	(revision ddbde341505b2fb04a0b5e0bb7d30a38fe431ded)
@@ -16,4 +16,41 @@
 assigning int: 0 0
 end construct A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this->x
+copy constructing int: 1001
+assign this->y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+begin ?=? A
+copy constructing int: 1001
+destructing int: 1001
+destructing int: 1001
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end ?=? A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this->x
+copy constructing int: 1001
+assign this->y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+destructing int: 0
+destructing int: 0
+destructing int: 1001
+destructing int: 0
+destructing int: 0
+destructing int: 1001
 construct b->a1
 constructing int
@@ -36,18 +73,27 @@
 copy constructing int: 1000
 assign this->y
-end copy construct A
-copy constructing int: 0
-copy constructing int: 0
-begin copy construct A
-copy construct this->x
-copy constructing int: 1001
-assign this->y
-end copy construct A
-copy constructing int: 0
-copy constructing int: 0
-begin copy construct A
-copy construct this->x
-copy constructing int: 0
-assign this->y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this->x
+copy constructing int: 1001
+assign this->y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this->x
+copy constructing int: 0
+assign this->y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
 end copy construct A
 End of main
@@ -60,4 +106,41 @@
 assigning int: 0 0
 end construct A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this->x
+copy constructing int: 999
+assign this->y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+begin ?=? A
+copy constructing int: 999
+destructing int: 999
+destructing int: 999
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end ?=? A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this->x
+copy constructing int: 999
+assign this->y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+destructing int: 0
+destructing int: 0
+destructing int: 999
+destructing int: 0
+destructing int: 0
+destructing int: 999
 destructing int: 0
 destructing int: 0
@@ -80,4 +163,41 @@
 assigning int: 0 0
 end construct A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this->x
+copy constructing int: 999
+assign this->y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+begin ?=? A
+copy constructing int: 999
+destructing int: 999
+destructing int: 999
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end ?=? A
+copy constructing int: 0
+copy constructing int: 0
+begin copy construct A
+copy construct this->x
+copy constructing int: 999
+assign this->y
+copy constructing int: 0
+destructing int: 0
+destructing int: 0
+end copy construct A
+destructing int: 0
+destructing int: 0
+destructing int: 999
+destructing int: 0
+destructing int: 0
+destructing int: 999
 destructing int: 0
 destructing int: 0
Index: src/tests/memberCtors.c
===================================================================
--- src/tests/memberCtors.c	(revision 992386182ecafc440e6db7bddd4e6a47aa0b082a)
+++ src/tests/memberCtors.c	(revision ddbde341505b2fb04a0b5e0bb7d30a38fe431ded)
@@ -53,4 +53,13 @@
 } // z never constructed - will be automatically copy constructed
 
+A ?=?(A * this, A other) {
+  printf("begin ?=? A\n");
+  this->x = other.x;
+  this->y = other.y;
+  this->z = other.z;
+  printf("end ?=? A\n");
+  return *this;
+}
+
 struct B {
   A a1, a2, a3;
