...one of the most highly
regarded and expertly designed C++ library projects in the
world. — Herb Sutter and Andrei
boost::visit_each — Allow limited exploration of class members.
// In header: <boost/visit_each.hpp> template<typename Visitor, typename T> void visit_each(const Visitor& visitor, const T& t, int);
allows a visitor to be applied to every subobject in a given
object. It is used by the Signals library to discover
signals::trackable objects within a
function object, but other uses may surface if used
universally (e.g., conservative garbage collection). To fit
visit_each overload must be
supplied for each object type.
The third parameter is
Library authors will be expected to add additional overloads that specialize the T argument for their classes, so that subobjects can be visited.
Calls to visit_each are required to be unqualified, to enable argument-dependent lookup.