diff --git a/libwccl/ops/conditional.h b/libwccl/ops/conditional.h
index e17a02042984bdab552cf27c4f8cfb515720d920..ef24d93759576584882dbb87c9bee16451db749a 100644
--- a/libwccl/ops/conditional.h
+++ b/libwccl/ops/conditional.h
@@ -21,11 +21,11 @@ class Conditional : public Function<T> {
 public:
 	typedef boost::shared_ptr<Function<T> > ArgFunctionPtr;
 	typedef boost::shared_ptr<Function<Bool> > BoolFunctionPtr;
-
+	
 	Conditional(
 		const BoolFunctionPtr& cond_expr,
 		const ArgFunctionPtr& iftrue_expr,
-		const ArgFunctionPtr& iffalse_expr = ArgFunctionPtr(new Constant<T>(T())))
+		const ArgFunctionPtr& iffalse_expr = Default())
 		: cond_expr_(cond_expr), iftrue_expr_(iftrue_expr), iffalse_expr_(iffalse_expr)
 	{
 		BOOST_ASSERT(cond_expr_);
@@ -74,6 +74,11 @@ protected:
 	const ArgFunctionPtr iftrue_expr_;
 	const ArgFunctionPtr iffalse_expr_;
 
+	static const ArgFunctionPtr& Default() {
+		static ArgFunctionPtr x(new Constant<T>(T()));
+		return x;
+	}
+
 	typedef FunctionBase::BaseRetValPtr BaseRetValPtr;
 
 	/**