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); } } }; }