namespace fbp { struct output: public portal { output(std::string name): portal(name) {} void connect(connectable* link) override { link->sender(this); portal::connect(link); } template<typename T> void send(std::unique_ptr<T> ip, std::string port) { static_cast<connection<T>*>(this->operator[](port))->send(std::move(ip)); } }; }