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