// PRMS Id: 3764 (c/h)
// Bug: g++ gets into an infinite loop trying to find the top-level context
// Build don't link:

class Menu;
class MenuItem;

class MenuAction {
public:
  virtual void execute (Menu& menu, MenuItem& menuItem) = 0;
protected:
  MenuAction () {}
}; 

class Test {
  class MenuCBA : public MenuAction {
  public:
    typedef void (Test::* MenuCBA_Member) (Menu& menu, MenuItem& menuItem);
    MenuCBA (Test& instance, MenuCBA_Member member)
      : _instance(&instance), _member(member) {	}
    void execute (Menu& menu, MenuItem& menuItem);
  private:
    MenuCBA_Member _member;
    Test* _instance;
  };
};
