abstract_command_object

Command objects are a common pattern, so it's important to establish a standard abstract base early on. Here it is:
class abstract_command_object {
public:
   virtual ~abstract_command_object() {}
   virtual void operator()() =0;
   };