Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision 6b0b624129f6017f7706b516a24a52e382e3a334)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision c9c9fd7e3c551ae156e377a744ae57721ed7e8a4)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Sat May 16 23:52:08 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 17 09:14:17 2017
-// Update Count     : 30
+// Last Modified By : Andrew Beach
+// Last Modified On : Wed Jul 26 11:33:00 2017
+// Update Count     : 31
 //
 
@@ -878,4 +878,17 @@
 	}
 
+	void AlternativeFinder::visit( VirtualCastExpr * castExpr ) {
+		assertf( castExpr->get_result(), "Implicate virtual cast targets not yet supported." );
+		AlternativeFinder finder( indexer, env );
+		// don't prune here, since it's guaranteed all alternatives will have the same type
+		// (giving the alternatives different types is half of the point of ConstructorExpr nodes)
+		finder.findWithAdjustment( castExpr->get_arg(), false );
+		for ( Alternative & alt : finder.alternatives ) {
+			alternatives.push_back( Alternative(
+				new VirtualCastExpr( alt.expr->clone(), castExpr->get_result()->clone() ),
+				alt.env, alt.cost ) );
+		}
+	}
+
 	void AlternativeFinder::visit( UntypedMemberExpr *memberExpr ) {
 		AlternativeFinder funcFinder( indexer, env );
Index: src/ResolvExpr/AlternativeFinder.h
===================================================================
--- src/ResolvExpr/AlternativeFinder.h	(revision 6b0b624129f6017f7706b516a24a52e382e3a334)
+++ src/ResolvExpr/AlternativeFinder.h	(revision c9c9fd7e3c551ae156e377a744ae57721ed7e8a4)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Sat May 16 23:56:12 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:35:32 2017
-// Update Count     : 3
+// Last Modified By : Andrew Beach
+// Last Modified On : Wed Jul 26 11:24:00 2017
+// Update Count     : 4
 //
 
@@ -49,4 +49,5 @@
 		virtual void visit( AddressExpr *addressExpr );
 		virtual void visit( CastExpr *castExpr );
+		virtual void visit( VirtualCastExpr *castExpr );
 		virtual void visit( UntypedMemberExpr *memberExpr );
 		virtual void visit( MemberExpr *memberExpr );
