Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision 80eefcbc5f9cf0e96b03174100a2ac5bb28ee6ac)
+++ src/SymTab/Indexer.cc	(revision 43e0949c5f8c1f5a4cfb68e9506dd718e55a6b07)
@@ -102,5 +102,5 @@
 	}
 
-	void Indexer::removeSpecialOverrides( const std::string &id, std::list< IdData > & out ) const {
+	void Indexer::removeSpecialOverrides( const std::string &id, std::vector< IdData > & out ) const {
 		// only need to perform this step for constructors, destructors, and assignment functions
 		if ( ! CodeGen::isCtorDtorAssign( id ) ) return;
@@ -116,5 +116,5 @@
 			bool existsUserDefinedCopyFunc = false;    // user-defined copy ctor found
 			BaseSyntaxNode * deleteStmt = nullptr;     // non-null if a user-defined function is found
-			std::list< DeclBall > decls;
+			std::vector< DeclBall > decls;
 
 			// another FunctionDecl for the current type was found - determine
@@ -135,6 +135,6 @@
 		}; // ValueType
 
-		std::list< IdData > copy;
-		copy.splice( copy.end(), out );
+		std::vector< IdData > copy;
+		swap( copy, out );
 
 		// organize discovered declarations by type
@@ -231,5 +231,5 @@
 	}
 
-	void Indexer::lookupId( const std::string &id, std::list< IdData > &out ) const {
+	void Indexer::lookupId( const std::string &id, std::vector< IdData > &out ) const {
 		std::unordered_set< std::string > foundMangleNames;
 
Index: src/SymTab/Indexer.h
===================================================================
--- src/SymTab/Indexer.h	(revision 80eefcbc5f9cf0e96b03174100a2ac5bb28ee6ac)
+++ src/SymTab/Indexer.h	(revision 43e0949c5f8c1f5a4cfb68e9506dd718e55a6b07)
@@ -60,5 +60,5 @@
 
 		/// Gets all declarations with the given ID
-		void lookupId( const std::string &id, std::list< IdData > &out ) const;
+		void lookupId( const std::string &id, std::vector< IdData > &out ) const;
 		/// Gets the top-most type declaration with the given ID
 		NamedTypeDecl *lookupType( const std::string &id ) const;
@@ -140,5 +140,5 @@
 		// so that they will not be selected
 		// void removeSpecialOverrides( FunctionDecl *decl );
-		void removeSpecialOverrides( const std::string &id, std::list< IdData > & out ) const;
+		void removeSpecialOverrides( const std::string &id, std::vector< IdData > & out ) const;
 
 		/// Ensures that tables variable is writable (i.e. allocated, uniquely owned by this Indexer, and at the current scope)
