// { dg-do assemble } // prms-id: 3764 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; }; };