Index: doc/generic_types/evaluation/Makefile
===================================================================
--- doc/generic_types/evaluation/Makefile	(revision eaa504332f75ac9c8ba969d09fb9b509a00a27c1)
+++ doc/generic_types/evaluation/Makefile	(revision b14dd0306591d9b9afea141cf2ecfd8e2fb37900)
@@ -6,5 +6,5 @@
 .PHONY: all clean distclean run-c run-cpp run-cfa run
 
-all: c-bench cpp-bench cfa-bench
+all: c-bench cpp-bench cfa-bench cpp-vbench
 
 # rewrite object generation to auto-determine deps
Index: doc/generic_types/evaluation/cpp-vbench.cpp
===================================================================
--- doc/generic_types/evaluation/cpp-vbench.cpp	(revision eaa504332f75ac9c8ba969d09fb9b509a00a27c1)
+++ doc/generic_types/evaluation/cpp-vbench.cpp	(revision b14dd0306591d9b9afea141cf2ecfd8e2fb37900)
@@ -42,7 +42,9 @@
 	)
 
-	pair max2 = { std::make_unique<boolean>(false), std::make_unique<character>('\0') };
+	auto max2 = std::make_unique<pair>( std::make_unique<boolean>(false), 
+		std::make_unique<character>('\0') );
 	REPEAT_TIMED( "pop_bool_char",
-		max2 = std::max( max2, t2.pop()->as<pair>() );
+		std::unique_ptr<object> x = t2.pop();
+		if ( x->as<pair>() > *max2 ) { max2.reset( static_cast<pair*>(x.release()) ); }
 	)
 }
