104 <
typename RET = void
105 ,
template <
class>
class ERR = UseDefault
113 virtual ~
Tool () { };
157 class TAR,
class TYPES,
164 typedef typename BASE::ToolBase
ToolBase;
170 TOOLImpl* typeref = 0;
178 TOOLImpl* typeref = 0;
204 virtual ReturnType apply (TOOL&) = 0;
211 typedef typename TOOL::ToolBase
ToolBase;
219 static inline ReturnType
231 #define DEFINE_PROCESSABLE_BY(TOOL) \ 232 virtual ReturnType apply (TOOL& tool) \ 233 { return dispatchOp (*this, tool); }
Marker template to declare that some "visiting tool" wants to treat a set of concrete Visitable class...
A template metaprogramming technique for manipulating collections of types.
Marker interface or base class for all "Visitables".
Implementation namespace for support and library code.
static ReturnType dispatchOp(TAR &target, TOOL &tool)
Helper for a trampoline table based implementation of the visitor pattern.
Type tag for concrete visiting tool classes.
static Depend< Dispatcher< TAR, TOOL > > instance
storage for the dispatcher table(s)
Policies usable for configuring the lib::visitor::Tool for different kinds of error handling...