blob: 3835f37f3e29cc16685d0850631e74a3237839b7 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// Visitors
template <class Base> struct Visitor;
template <class Base, class F, class R> FunctorVisitor;
/** Template base implementation for visitables. */
template <class Base, class Derived>
struct VisitableBase : public Base {
virtual void accept(Visitor<Derived>& v) {
v.visit(static_cast<Derived>&(*this));
}
virtual void accept(Visitor<Derived>& v) const {
v.visit(static_cast<const Derived>&(*this));
}
};
|