#ifndef _VISITOR_HPP_ #define _VISITOR_HPP_ template<typename T> struct visitor { virtual bool visit(T o)=0; virtual ~visitor(){} }; template<typename T> struct acceptor { virtual void accept(visitor<T>&v) { } virtual ~acceptor(){} }; #endif