#pragma once template struct Visitable { virtual ~Visitable() = default; virtual void accept(T& visitor) = 0; };