Index: src/InitTweak/GenInit.cc
===================================================================
--- src/InitTweak/GenInit.cc	(revision 65660bd065cbc0b68c92db2425b5984d675dff58)
+++ src/InitTweak/GenInit.cc	(revision ac9ca967fc4b0004f809382a113690d4c01cae00)
@@ -238,4 +238,10 @@
 
 	bool CtorDtor::isManaged( Type * type ) const {
+		if ( TupleType * tupleType = dynamic_cast< TupleType * > ( type ) ) {
+			// tuple is also managed if any of its components are managed
+			if ( std::any_of( tupleType->get_types().begin(), tupleType->get_types().end(), [&](Type * type) { return isManaged( type ); }) ) {
+				return true;
+			}
+		}
 		return managedTypes.find( SymTab::Mangler::mangle( type ) ) != managedTypes.end();
 	}
@@ -245,7 +251,4 @@
 		while ( ArrayType * at = dynamic_cast< ArrayType * >( type ) ) {
 			type = at->get_base();
-		}
-		if ( TupleType * tupleType = dynamic_cast< TupleType * > ( type ) ) {
-			return std::any_of( tupleType->get_types().begin(), tupleType->get_types().end(), [&](Type * type) { return isManaged( type ); });
 		}
 		return isManaged( type );
