1// { dg-do compile }
2struct base { void somemethod() {} };
3struct derived : public base { };
4
5struct smartpointer
6{
7  ~smartpointer() { }
8  operator derived*() const
9  {
10    return 0;
11  }
12};
13typedef void ( derived::* methodptr_type )();
14methodptr_type getmemberptr()
15{
16        return &derived::somemethod;
17}
18void somefunction()
19{
20        smartpointer pObj;
21        ( pObj->*getmemberptr() )();
22}
23