Index: src/Tuples/TupleAssignment.cc
===================================================================
--- src/Tuples/TupleAssignment.cc	(revision 74cdfb1cc402405e93d3bb654795b6909567dfe5)
+++ src/Tuples/TupleAssignment.cc	(revision 905841490d678a3d943dc7f6adfb4b619fd97434)
@@ -272,5 +272,11 @@
 		// args.push_back( new AddressExpr( new VariableExpr( left ) ) );
 		if ( right ) args.push_back( new VariableExpr( right ) );
-		return new UntypedExpr( new NameExpr( fname ), args );
+		if ( left->type->referenceDepth() > 1 && CodeGen::isConstructor( fname ) ) {
+			args.front() = new AddressExpr( args.front() );
+			if ( right ) args.back() = new AddressExpr( args.back() );
+			return new UntypedExpr( new NameExpr( "?=?" ), args );
+		} else {
+			return new UntypedExpr( new NameExpr( fname ), args );
+		}
 	}
 
@@ -291,5 +297,5 @@
 		if ( ! dynamic_cast< ReferenceType * >( expr->get_result() ) ) {
 			ConstructorInit * ctorInit = InitTweak::genCtorInit( ret );
-			ret->set_init( ctorInit );
+			ret->init = ctorInit;
 			ResolvExpr::resolveCtorInit( ctorInit, spotter.currentFinder.get_indexer() ); // resolve ctor/dtors for the new object
 			PassVisitor<EnvRemover> rm; // remove environments from subexpressions of StmtExprs
