1 // { dg-do assemble  }
2 // prms-id: 3764
3 
4 class Menu;
5 class MenuItem;
6 
7 class  MenuAction {
8 public:
9   virtual void execute (Menu& menu, MenuItem& menuItem)  = 0;
10 protected:
MenuAction()11   MenuAction () {}
12 };
13 
14 class Test {
15   class MenuCBA : public MenuAction {
16   public:
17     typedef void (Test::* MenuCBA_Member) (Menu& menu, MenuItem& menuItem) ;
MenuCBA(Test & instance,MenuCBA_Member member)18     MenuCBA(Test& instance, MenuCBA_Member member)
19       : _instance(&instance), _member(member) { }
20     void execute(Menu& menu, MenuItem& menuItem);
21   private:
22     MenuCBA_Member _member;
23     Test *_instance;
24   };
25 };
26