| // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11 | |
| // expected-no-diagnostics | |
| struct A {}; | |
| struct B { | |
| operator A*(); | |
| }; | |
| struct C : B { | |
| }; | |
| void foo(C c, B b, int A::* pmf) { | |
| int j = c->*pmf; | |
| int i = b->*pmf; | |
| } | |
| struct D { | |
| operator const D *(); | |
| }; | |
| struct DPtr { | |
| operator volatile int D::*(); | |
| }; | |
| int test(D d, DPtr dptr) { | |
| return d->*dptr; | |
| } | |