From 0cf90292c3b226c3a34b999ad9880d800b2eeb1e Mon Sep 17 00:00:00 2001 From: Christian Zimmermann Date: Thu, 16 Feb 2017 10:36:02 +0100 Subject: [PATCH] finished first operation stuff --- src/me.cc | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/me.cc b/src/me.cc index 945eb86..68558fb 100644 --- a/src/me.cc +++ b/src/me.cc @@ -544,13 +544,18 @@ namespace ME std::get<0>(itp).linkTo(target); } - template - T callOperation(Operation& op, Tuple& tp, MBases&... secs) + template + auto callOperation(Operation& op, Tuple& tp, MBases&... secs) + -> decltype(callOperation(op, tp, std::get(tp), secs...)) { - return callOperation(op, tp, std::get(tp), secs...); + return callOperation(op, tp, std::get(tp), secs...); } - // spezialization for termination !!! + template + auto callOperation<0>(Operation& op, Tuple& tp, MBases&... secs) -> decltype(op(secs.get()...)) + { + return op(secs.get()...); + } template size_t MultiArrayOperation::argNum() const @@ -568,14 +573,14 @@ namespace ME template T& MultiArrayOperation::get() { - mVal = mOp(); + mVal = callOperation(mOp, mSecs); return mVal; } template const T& MultiArrayOperation::get() const { - mVal = mOp() + mVal = callOperation(mOp, mSecs); return mVal; }