Index: src/Tuples/TupleExpansion.cc
===================================================================
--- src/Tuples/TupleExpansion.cc	(revision 579263a52ab065d42a5208e15e3d707dd0d03798)
+++ src/Tuples/TupleExpansion.cc	(revision 35b06a852dd54a2edc920453617b9908074e6397)
@@ -310,20 +310,19 @@
 	Type * makeTupleType( const std::list< Expression * > & exprs ) {
 		// produce the TupleType which aggregates the types of the exprs
-		TupleType *tupleType = new TupleType( Type::Qualifiers( Type::Const | Type::Volatile | Type::Restrict | Type::Lvalue | Type::Atomic | Type::Mutex ) );
-		Type::Qualifiers &qualifiers = tupleType->get_qualifiers();
+		std::list< Type * > types;
+		Type::Qualifiers qualifiers( Type::Const | Type::Volatile | Type::Restrict | Type::Lvalue | Type::Atomic | Type::Mutex );
 		for ( Expression * expr : exprs ) {
 			assert( expr->get_result() );
 			if ( expr->get_result()->isVoid() ) {
 				// if the type of any expr is void, the type of the entire tuple is void
-				delete tupleType;
 				return new VoidType( Type::Qualifiers() );
 			}
 			Type * type = expr->get_result()->clone();
-			tupleType->get_types().push_back( type );
+			types.push_back( type );
 			// the qualifiers on the tuple type are the qualifiers that exist on all component types
 			qualifiers &= type->get_qualifiers();
 		} // for
 		if ( exprs.empty() ) qualifiers = Type::Qualifiers();
-		return tupleType;
+		return new TupleType( qualifiers, types );
 	}
 
