diff --git a/Threads/Inc/threads_actor_output.hpp b/Threads/Inc/threads_actor_output.hpp index d08a943..b223572 100644 --- a/Threads/Inc/threads_actor_output.hpp +++ b/Threads/Inc/threads_actor_output.hpp @@ -8,6 +8,12 @@ #ifndef SKULLC_THREADS_ACTOR_OUTPUT_HPP_ #define SKULLC_THREADS_ACTOR_OUTPUT_HPP_ +#include +#include +#include + +#include + namespace Threads { @@ -19,7 +25,7 @@ private: std::array stored_signals_; public: - using connection_type = std::optional; + using connection_type = std::optional; template connection_type addConnection(Signallable* signal) @@ -49,7 +55,9 @@ public: { if (it == *connection) { - *it = std::monostate; + delete *it; + + *it = std::monostate{}; return true; } } @@ -84,10 +92,17 @@ protected: }; template -typename Receiver::connection_type connectActors(Sender& sender, Receiver& receiver) +auto connectActors(Sender* sender, Receiver* receiver) { - auto* signal = sender.getAllocatedSignal(); - return receiver.addConnection(signal); + auto* signal = receiver->template getAllocatedSignal(); + return sender->addConnection(signal); +} + +template +auto connectActors(Sender& sender, Receiver& receiver) +{ + auto* signal = receiver.template getAllocatedSignal(); + return sender.addConnection(signal); } }// namespace Threads