96 ,
template <
class>
class ERR = UseDefault
98 class Tool :
public ERR<RET>
148 class TAR,
class TYPES,
161 TOOLImpl* typeref = 0;
169 TOOLImpl* typeref = 0;
186 <
class TOOL = Tool<>
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...
static Depend< Dispatcher< TAR, TOOL > > instance
storage for the dispatcher table(s)
Type tag for concrete visiting tool classes.
static Tag & get(TOOLImpl *const =0)
Marker interface or base class for all "Visitables".
static ReturnType dispatchOp(TAR &target, TOOL &tool)
TOOL::ReturnType ReturnType
virtual ReturnType apply(TOOL &)=0
to be defined by the DEFINE_PROCESSABLE_BY macro in all classes wanting to be treated by some tool
Implementation namespace for support and library code.
A template metaprogramming technique for manipulating collections of types.
Helper for a trampoline table based implementation of the visitor pattern.
Policies usable for configuring the lib::visitor::Tool for different kinds of error handling.