namespace messaging { class sender { queue* q; public: sender() : q(nullptr) {} explicit sender(queue* q_) : q(q_) {} template void send(Message const& msg) { if (q) { q->push(msg); } } }; } // namespace messaging