Listing 9
template<class ValueType, class NameTag,class Scope>
void operator()(ValueType &, NameTag ,EnterAttributeTag, Scope*)
{ /* whatever needs to be done */ }
template<class ValueType, class NameTag,class Scope>
void operator()(ValueType &, NameTag, LeaveAttributeTag, Scope*)
{ /* whatever needs to be done */ }
template<class ValueType, class NameTag,class Scope>
void operator()(ValueType&,NameTag , EnterReflectedClassTag,Scope*)
{ /* whatever needs to be done */ }
template<class ValueType, class NameTag,class Scope>
void operator()(ValueType&,NameTag , LeaveReflectedClassTag,Scope*)
{ /* whatever needs to be done */ }
template<class CollectionType, class NameTag,class Scope>
void operator()(CollectionType&, NameTag , EnterCollectionTag, Scope*)
{ /* whatever needs to be done */ }
template<class CollectionType, class NameTag,class Scope>
void operator()(CollectionType&, NameTag, LeaveCollectionTag, Scope*)
{ /* whatever needs to be done */ }
template<class ValueType, class NameTag,class Scope>
void operator()(ValueType&,NameTag, EnterCollItemTag, Scope*)
{ /* whatever needs to be done */ }
template<class ValueType, class NameTag,class Scope>
void operator()(ValueType&,NameTag, LeaveCollItemTag , Scope*)
{ /* whatever needs to be done */ }
template<class ValueType, class NameTag,class Scope>
void operator()(ValueType& value,NameTag, Scope*)
{ /* do something to process a "leaf" value*/ }