96 ,
template <
class>
class ERR = UseDefault
98 class Tool :
public ERR<RET>
104 virtual ~
Tool () { };
148 class TAR,
class TYPES,
155 typedef typename BASE::ToolBase
ToolBase;
161 TOOLImpl* typeref = 0;
169 TOOLImpl* typeref = 0;
195 virtual ReturnType apply (TOOL&) = 0;
202 typedef typename TOOL::ToolBase
ToolBase;
210 static inline ReturnType
222 #define DEFINE_PROCESSABLE_BY(TOOL) \ 223 virtual ReturnType apply (TOOL& tool) \ 224 { 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...