From 3aed3e724b2d1bc5d14f3f3c29f253249e0d1ffe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Adam=20Wardy=C5=84ski?= <no@email>
Date: Wed, 10 Nov 2010 18:13:51 +0100
Subject: [PATCH] Making the default for "value-if-false" parameter to be a
 static, initialized on demand, member of Conditional.

---
 libwccl/ops/conditional.h | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/libwccl/ops/conditional.h b/libwccl/ops/conditional.h
index e17a020..ef24d93 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;
 
 	/**
-- 
GitLab