...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
boost::signal — Safe multicast callback.
// In header: <boost/signal.hpp> template<typename Signature, typename Combiner = last_value<R>, typename Group = int, typename GroupCompare = std::less<Group>, typename SlotFunction = functionN<Signature> > class signal : public signalN<R, T1, T2, ..., TN, Combiner, Group, GroupCompare, SlotFunction> { public: // construct/copy/destruct signal(const combiner_type& = combiner_type(), const group_compare_type& = group_compare_type()); };
Class template signal is a thin wrapper around the numbered class templates signal0, signal1, etc. It accepts a function type with N arguments instead of N separate arguments, and derives from the appropriate signalN instantiation.
All functionality of this class template is in its base class signalN.
typename Signature
typename Combiner = last_value<R>
typename Group = int
typename GroupCompare = std::less<Group>
typename SlotFunction = functionN<Signature>