From 3883f92296337927605bd4f719ca92c651e74648 Mon Sep 17 00:00:00 2001 From: "keldu.magnus" Date: Mon, 3 May 2021 22:10:46 +0200 Subject: [PATCH] reduction fix. move declaration and add event_loop constructor to ConveyorSinks --- source/async.cpp | 2 ++ source/async.h | 10 +++++++++- source/async.tmpl.h | 7 ------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/source/async.cpp b/source/async.cpp index 142745e..65ee9b8 100644 --- a/source/async.cpp +++ b/source/async.cpp @@ -277,6 +277,8 @@ void ConveyorSinks::fail(Error &&error) { /// @todo call error_handler } +ConveyorSinks::ConveyorSinks(EventLoop &event_loop) : Event{event_loop} {} + void ConveyorSinks::add(Conveyor &&sink) { auto nas = Conveyor::fromConveyor(std::move(sink)); diff --git a/source/async.h b/source/async.h index 13e26a2..ad970be 100644 --- a/source/async.h +++ b/source/async.h @@ -88,11 +88,18 @@ template Conveyor chainedConveyorType(T *); template Conveyor chainedConveyorType(Conveyor *); +template T reduceErrorOrType(T *); + +template T reduceErrorOrType(ErrorOr *); + +template +using ReduceErrorOr = decltype(reduceErrorOrType((T *)nullptr)); + template using ChainedConveyors = decltype(chainedConveyorType((T *)nullptr)); template -using ConveyorResult = ChainedConveyors>; +using ConveyorResult = ChainedConveyors>>; struct PropagateError { public: @@ -274,6 +281,7 @@ private: public: ConveyorSinks() = default; + ConveyorSinks(EventLoop &event_loop); void add(Conveyor &&node); diff --git a/source/async.tmpl.h b/source/async.tmpl.h index 3ca26ed..12518b2 100644 --- a/source/async.tmpl.h +++ b/source/async.tmpl.h @@ -34,13 +34,6 @@ template void ImmediateConveyorNode::fire() { } } -template T reduceErrorOrType(T *); - -template T reduceErrorOrType(ErrorOr *); - -template -using ReduceErrorOr = decltype(reduceErrorOrType((T *)nullptr)); - template Conveyor::Conveyor(FixVoid value) : ConveyorBase(nullptr, nullptr) { // Is there any way to do this?