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; /**